问题：﻿自学 Java 怎么入门？ 在大学自学 Java。看视频教程和代码能看懂 自己写就写不出来，怎么样能够入门？
话题：﻿生活方式、Java、Java编程、Java程序员、Java入门
回答：﻿已经回答过类似的问题了，就将原回答贴在这里：在给出入门路线之前，先回答几个问题：要不要选择培训班？培训班基本上四个月速成，省心，不用操心软件、文档、路线、课程等等有老师带着做项目，最后还能推荐工作（培训班卖点，实际都有水分的）非科班是不是只能选择培训班了？当然不是，实际工作中，据我观察，有很多通过自学找到工作的培训班的卖点对你未必是个好事你可能会很依赖老师，无法形成行业所看重的独立解决问题的能力，我就见过很多培训班学生连eclipse去哪里下载都不知道的，太依赖老师了你可能很在意培训班推荐的工作，可是如果推荐的工作薪资很低你去不去？JavaWeb学习路线很多人私信我要学习路线，我贴个JavaWeb学习路线，仅供参考，但绝对够找工作的了,如下，都是可以免费找到的教程（请一定验证是否完整），拼凑起来差不多刚够学习JavaWeb了，只是衔接起来会有些不连贯，毕竟不是一个机构讲的，不过问题不大1.JavaSE-语言基础参考视频：传智毕向东、尚学堂马士兵、圣思园张龙的JavaSE视频教程参考书籍：《ThinkinginJava》，只适合参考，但不适合做入门书，作者在官网提供了免费电子版，链接我就不放了，自己找《HeadFirstJava》，生动有趣，入门阶段时间充足的话，建议翻翻《JavaAll-In-OneforDummies》，见名知意，就是给新手看的书，自然特别啰嗦特别厚，建议用作参考，很详细2.database-数据库参考视频：传智刘道成的MySQL视频教程传智韩忠康的MySQL视频教程以上两个课程的讲师都是讲PHP的，所以视频教程中会提到一些PHP内容，忽略就是了参考书籍：《MySQLCookbook》，仅适合做参考《SQLAll-In-OneforDummies》，延续了Dummies系列一贯的风格，冗余而详尽，适合查阅建议：先学MySQL，然后对比学习SQLServer和Oracle毕竟主流数据库都实现了SQL标准，区别只体现在各自提供的功能上2.1JDBC参考视频：传智李勇的（其他老师的忽略）JDBC视频教程,这部分讲的很全，基本不用看书参考书籍：《CoreJava》的JDBC章节还不错3.HTML、CSS、JS-前端基础（没错，JavaWeb通常做后台，但是前端基础也得有）参考视频：传智韩顺平的《轻松搞定网页设计(html+css+js)》，讲的一般，做入门凑合妙味课堂的HTML+CSS+JS，国内算讲的不错的，当然内容有点多，需要花更多时间参考书籍：DOM部分可以参考《DOM编程艺术》深入JS建议参考《Javascript权威指南》，原版更好，即：《Javascript:TheDefinitiveGuide》，经典的犀牛书：3.1JQuery-必备的前端类库参考视频北风网李炎恢讲的不错，通俗易懂，贴近实战圣思园张龙讲的也不错，更多原理，例如：JS的继承和作用域链等等，很少有培训班能讲到参考书籍JQuery多参考官方API，google关键词"jquerydocumentation"即可JQuery的作者JohnResig写过一本javascript书，质量很好，有兴趣的可以参考下：3.2EasyUI-UI框架，因为简单易用基于jquery而在国内大行其道这部分可以先不看，javascript和jquery学的好，学这个没难度，一天的事儿EasyUI国内使用特别广泛，但国外似乎没见过用这个的，可能是因为UI比较丑而且趋于收费了（商用收费）EasyUI官方文档和Demo基本足够（官网经常被墙，请自备梯子）3.3ExtJS对javascript的基础要求比较高，我不建议初学就接触，可以在深入JS的机制后再学习参考书籍：《ExtJSinAction》3.4Ajax参考视频：传智王兴魁老师的视频教程之前提到的javascript和jquery课程里，也都提到了ajax的内容必要的话，请自行搜索JQuery对Ajax的支持3.5AngularJS+BoostrapAngularJS是Google出品的，Bootstrap是Twitter出品的虽然在国外很流行，AngularJS在国内用来做产品的不多，Bootstrap作为组件式样式库，是提升开发效率的必备工具参考视频Youtube上TraversyMedia（自备梯子）发布的BootstrapBeginnerCrashCourse建议看看，快速入门，然后参考Bootstrap官方文档按需应用即可Youtube上johnlindquist发布的AngularJS入门课程一定要看（自备梯子），没错就是这个鹅卵头：参考书籍O'Reilly出版的《AngularJSUpandRunning》适合搭配入门视频看TeroParviainen独立编写的《BuildYourOwnAngularJS(2015)》非常推荐，正如书名所说，看完你就明白AngularJS的里里外外了，模仿个自己的AngularJS都没问题Bootstrap个人认为没必要看书，搭配之前提到的入门视频，参考官方文档，弄明白contextualclasses、responsivegridlayout等核心概念就可以了额外拓展如果还有精力，建议看下基于angularjs的materialdesign，google官方有参考实现叫做"angularmaterial"如果以后打算做mobileUI，可以探索下大行其道的Ionic（基于angularjs）4.JavaWeb-没错，学完上述内容，才能步入Java的Web阶段参考视频：传智播客方立勋的JavaWeb视频教程参考书籍：《HeadFirst:ServletandJSP》很形象的一本书，图示很多，理解起来很舒服虽然08年出版的，但并不过时，可以帮你理清很多国内视频所讲不清楚的地方5.SSH-轻量级企业开发框架Struts2-MVC框架参考视频：传智黎活明、尚学堂马士兵、圣思园张龙的Struts2视频教程参考书籍：《StrutsinAction》《ApacheStruts2WebApplicationDevelopment-DaveNewton》质量略低，做参考挺不错的，按照知识点划分的，查阅起来也很方便中文版好像有《Struts权威指南》之类的书，不是很推荐，不过英文不好的话没得选个人认为现在Struts2已经可以不学了，学习SpringMVC即可，当然如果遇上前些年的项目，可能仍然需要学习Struts2Struts2也许已经featurecomplate了，官方社区修复bug的速度慢不说，也没有什么大家期望的featureSpring-IoC容器参考视频：动力节点王勇、传智黎活明的Spring视频教程培训班讲的都是Spring基础，更多内容需要参照Spring官方的reference，写的比书还好参考书籍：《SpringinPractice》Hibernate-持久层框架参考视频：传智汤阳光（推荐）、尚学堂马士兵（经典但太老）的Hibernate视频教程参考书籍：《Hibernateinaction》《JavaPersistencewithHibernate1stEdition2006》，Hibernate作者主编，虽然是2006年出版的，但核心内容讲的很全面，非常值得参考《JavaPersistencewithHibernate2ndEdition2015.10》，最近到Manning官网发现第二版已发布，粗略看了下，全书以JPA为主线，Hibernate特色做补充，随书案例也是很不错的，可能是为hibernate5做的更新，毕竟是个大版本，挺多变化的此时，基本企业开发技术都学过了，可以试着找工作，实习没问题的，缺点项目经验罢了。6.工作中的加分项（急着找工作的话，可以先找工作，然后工作中补补）WebService，两种规范：JAX-WS和JAX-RS建议先学规范的标准实现，再反向了解规范含义JAX-WS，俗称WebService参考书籍：《JavaWebServices:UpandRunning》了解WebService的历史、体系及各种实现的大概介绍，对应中文版本是《JavaWeb服务-构建与运行》参考视频：尚硅谷张晓飞、传智赵庆轩的webservice视频教程学习使用CXF（推荐）或Axis2，参考《ApacheCXFWebServiceDevelopment》ApacheCXF的文档有点乱，所以学习起来可能会困难些，没办法，Apache的文档总是看着很难受，费点儿劲还是能学到不少东西的JAX-RS，俗称RestulWebService，时间多的话，建议把两种主流的框架都熟悉下：Jersey，SUN对JAX-RS的官方参考实现参考书籍：《DevelopingRESTfulWebServiceswithJersey2.0》Restlet，早于JAX-RS规范出现，后来也提供了对JAX-RS的支持参考书籍：《RestletinAction》WebService的测试，一般使用SoapUI（为主流IDE提供了插件）参考书籍：《WebServicesTestingwithSoapUI》实际开发时，为了提高开发效率，可能需要使用curl这样的工具来快速访问服务，如果你安装了Git,那么curl已经自带了，打开gitbash即可调用JPA，J2EE中的一个持久化规范标准实现有：Hibernate/OpenJPA/EclipseLink之前提到的hibernate已经实现了JPA，学过hibernate后，建议学习下hibernate和JPA注解的混搭使用，其他的JPA实现，了解即可参考书籍：《JavaPersistencewithJPA-DaoqiYang》，是位美籍华人写的英文书，简洁易懂，对照这本书里的案例，理解起来不是很难MyBatis，只是JDBC的简易封装很简单，花三两天时间看看其官网文档就可以搞定7.自动构建，现在大多数项目都采用构建工具，但对应教程很稀少，能讲清楚的也不多常见构建工具：Maven/Gradle/Ant+Ivy等Gradle可以参考《GradleinAction-BenjaminMuschko2014》Maven可以参考《Maven实战》，没错，是为数不多写的也不错的国产书Ant常常和Ivy搭配使用，但现在一般使用Maven就足够了，所以可以不学习，想了解的可以参考官方文档8.我的忠告：在培训班讲课的老师们，当年也都是自学过来的（他们那个年代还没有软件培训班呢），从这个角度说，自学并非那么不现实，和人有关，和学习环境关系不大如果你决心花一年时间学习，那就没必要报班了，因为自学最大的挑战不是技术，而是解决问题过程中的烦躁、绝望和质疑不要以为英文的书会浪费你的时间，事实上，当你习惯看英文资料后，你会节省很多时间，至少不会找乱七八糟的中文资料还搞不清楚怎么回事工作中多参考官方文档，不要以为学过了就会用了，好多细节不是老师能够教给你的例如SpringReference,里面有很多原理性的东西，能让你使用起来更有自信熟悉Spring的，可以参考我的另一回答：spring有什么缺点吗？多熟悉J2EE的规范，如CDI，适当了解规范的其他实现及其规范之外的特色SpringGuice工作中不要什么都去自己从头做，有些功能完全可以使用第三方类库实现，例如Guava，支持泛型和函数式编程，源码也值得学习ApacheCommons，这个太常见了，有很多功能不同的组件对新技术要敏感一些，但不要一味追新，因为你永远追不上，语言层面的NewFeature要多少会用，也能说得上来优劣，此外，JVM上还有Scala和Groovy之类的语言，可以适当了解下重要的永远都是底层和基础，大牛永远都是这么说，虽然确实如此，工作之余，了解一下常用的算法和理论，你不能指望自己不懂TCP、HTTP、Socket就直接使用Netty那种高度抽象的框架来实现很好的并发。自学相关的问题，如果上述没有提到，欢迎知乎私信。