java书籍推荐:
《Head First Java, 2nd Edition(中文版)》
这本书不仅内容丰富、有趣且通俗易懂,并且涵盖了所有 Java 相关的基础知识。如果你是 Java 初学者,这本书正适合你。
《Java 核心技术(卷1、2)》
写作风格相比 Head First 趣味性来说更显传统,所涵盖的内容包括 Java 基础知识及高级应用,是对于入门来说的另一种选择。
《Java 编程思想(第4版)》
必读之作,不仅涵盖所有 Java 基础,对于编程思想层面的提升也有很好的帮助。
《Head First 设计模式》
延续 Head First 一贯生动趣味的写作风格,介绍 23 个设计模式,推荐作为设计模式入门级书。
《Effective Java 中文版(第2版)》
Java 编程中78条极具实用价值的经验规则,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案。
《重构:改善既有代码的设计》
出自于 Martin Fowler 的大作,写出优秀代码的必经之路。
《Java Concurrency in Practice》
了解 Java 并发编程必读佳作,建议阅读英文版。
另外,《Java 7 Concurrency Cookbook》也是 Java 并发入门学习的书籍:Java 7 并发编程指南中文版
《深入理解 Java 虚拟机》
出自于 icyfenix 之手,可以作为了解 JVM 及 Java 内存管理的入门书籍。
《Java 虚拟机规范(Java SE 7版)》
作者是 Java 编程语言的主要贡献者之一。如果你想系统、全面、深入的学习 JVM,绝对不能错过这本书。
《企业应用架构模式 》
出自于 Martin Fowler 的大作,软件设计、架构经典之作。
《分布式 Java 应用:基础与实践》
来自淘宝大牛 bluedavy,推荐作为学习分布式应用入门书籍。
2.掌握了基础之后,再往深入一点研究Java的高级知识,比如注解、NIO、并发、
线程池、同步容器和并发容器、阻塞和非阻塞、反射、以及设计模式的一些东西。
3.学习使用jdbC来连接数据库,掌握基本的SQL语句,插入、查询、结果集resultSet,
再深入一点就是事务管理,看书的时候一定要思考为什么设计成这样,以及这样有什么缺陷。
4.学习各种Java的框架,比如比较流行的Spring,Struts,以及对象关系映射hibernate,
学会配置这些,最后能够把它们整合到一起,可以参考***In Action这些书籍。
Head First Java是所有编程或者Java初学者最适合的书籍,我很喜欢轻松和寓教于乐的Head First风格,这应该是最有意思的关于Java的书。无论是初级,中级还是高级都能从中有所收获。学习本书,你可以了解到类,对象,线程,集合等编程知识,还可以了解到泛型,枚举,可变参数和自动装箱等语言特性。本书中还涉及到了Java高级编程中的Swing,网络编程,IO操作等,可以让初学者对Java有比较完整地概念。如果你是一位Java初学者,不要犹豫,这本书最适合你了。
查看详细: Head First Java
Head First设计模式又是一部Head First系列的书籍。作者为Kathy Sierra及其团队。当我在2006年开始读这本书的时候,我对设计模式并不是很了解。设计模式解决什么问题,怎么解决问题,如何使用设计模式,设计模式有什么好处,这些问题我几乎都无法回答出来。但是当我读完这本书的时候,一切都豁然开朗。在本书介绍继承和组合一章,使用简单有趣的例子,一步一步提出问题并解决问题,最终得出最优解。本书中会有很多要点总结,幽默对话,练习题还有有名的单词接龙等帮助你更好地了解设计模式。如果你想了解Java中的设计模式,请带走这本书。
查看详细:Head First 设计模式
Effective Java这本书也是一本我最喜欢的。本书为领导开发Java集合框架和并发API包的 约书亚·布洛克 大神所著。本书适合于有着数年开发经验Java程序员,通过本书我们可以很多编程中的最佳实践,并且可以从JDK贡献者布洛克大神这里汲取经验。Effective Java从质量,内容和问题解答方式上来说都是一本评价很高的书,因此读这本书会是一种感觉很棒的体验。另外本书的章节相对比较轻量,与其他章节耦合度较低,因此在旅行或者闲暇时间阅读也是可以的。在内容方面,Effective Java包含了从静态工厂,序列化,equals和hashcode到泛型,枚举,可变参数以及反射的最佳解决方法。本书对Java各方面知识点的讲解会让你受益匪浅。
查看详细:Effective Java
又一部 约书亚·布洛克 大神的经典之作,当然本书的另一位主作者为 Doug Lea(影响两次Java历史上的大变革的大神)。这本书几乎就是Java并发和多线程编程方面的权威,同时也是核心Java开发人员必读的一本书。本书的强大主要表现在
查看详细:Java并发编程实战
这本书是来自O’Reilly的一本成功之作,作者为Naftalin和Philip Wadler。正如书名可知,这本书的内容关注于泛型和集合这两个Java语言的核心方面。本书对于那些有编程经验的程序员加强对集合和泛型的理解和掌握有很大的帮助。本书详细介绍了每一个集合的API,Set, List, Map, Queue,以及他们的实现,对比不同场景下它们的性能优劣。每个章节最后的对比图表很不错。
查看详细:Java Generics and Collections
本书为我个人的最爱,本书重点关注性能监视,性能剖析以及如何使用工具对性能分析。本书不同于其他的编程书籍,因为本书中涉及到很多Java虚拟机的细节,垃圾回收机制,Java堆内存监视以及对程序性能剖析。其中讲述JVM的章节写的很不错,很值得咀嚼。注意,这本书属于编程高级层次,阅读需要具有足够的Java编程经验。初级和中级Java开发者也可以阅读本书也会学到不同程度的干货。所以,你想进行性能调优,把这本书放到你的书架上吧。
查看详细:Java性能优化权威指南
再介绍一本 约书亚·布洛克 大神写的书。本书的另一位作者为Neal Gafter(已转到微软做Donet Compiler技术Lead)。本书讲述了Java语言中的极端情况和陷阱。相对于C++,Java更加安全低风险,JVM有着垃圾回收机制,让Java程序员不用关心内存分配和释放,大大提高了程序的开发效率。但是有些时候,即便是经验丰富的程序员也会被Java中的极端情况或陷阱给绊倒。本书列举并详细描述了Java中的这些陷阱。如果你喜欢刨根问底,钻牛角尖,这本书就是为你而写。通过本书,你可以了解很多java的核心知识并对自己的Java水平有所知晓。本人更加喜欢上面提到的 约书亚·布洛克 的 Effective Java 和 Concurrency Practice in Java。但是如果你感兴趣,还是可以去尝试的。为了让收获最大化,你可以先尝试解决书中的问题,然后对着书中的解释进行比较。
查看详细:Java Puzzlers
这是一本属于Head First系列的关于面向对象编程的书。本书建议和Head First设计模式结合阅读,效果更佳。本书关注于面向对象设计原则,比如多用组合少用继承,针对接口编程而非针对实现编程,不要重复你自己等。这本书可以帮助你写出好代码并且参考最佳实践进行优化改善。当然本书中的内容也适合使用其他面向对象的语言的程序员。想学好面向对象编码和设计规则,现在就开始读这本书哈。
查看详细:Head First Object Oriented Analysis and Design
Thinking in Java book应该是Java中文界最有名的书籍了,中文又名 Java编程思想。作者为Bruce Eckel,他也是Thinking in C++的作者,他用自己很独特的观点讲述了Java。据我所知,这本书获得了很高的认可,本书是一本介绍齐全的Java学习参考书。如果你不喜欢Head First类似小人书那样的讲解,可以尝试这本书。本书的内容讲解详细,成熟(相对Head First有种教科书的感觉)。
查看详细:Thinking in Java
《Java程序员修炼之道》分为四部分,第一部分全面介绍Java 7的新特性,第二部分探讨Java关键编程知识和技术,第三部分讨论JVM上的新语言和多语言编程,第四部分将平台和多语言编程知识付诸实践。从介绍Java 7的新特性入手,《Java程序员修炼之道》涵盖了Java开发中最重要的技术,比如依赖注入、测试驱动的开发和持续集成,探索了JVM上的非Java语言,并详细讲解了多语言项目, 特别是涉及Groovy、Scala和Clojure语言的项目。此外,书中含有大量代码示例,帮助读者从实践中理解Java语言和平台。《Java程序员修炼之道》适合Java开发人员以及对Java7和JVM新语言感兴趣的各领域人士阅读。 查看详细:Java程序员修炼之道
Java领域最有影响力和价值的著作之一,拥有20多年教学与研究经验的资深Java技术专家撰写(获Jolt大奖),与《Java编程思想》齐名,10余年全球畅销不衰,广受好评。)根据Java SE 7全面更新,系统全面讲解Java语言的核心概念、语法、重要特性和开发方法,包含大量案例,实践性强。
查看详细:Java核心技术
这就是我的关于Java编程相关的推荐的书,这些都可以说是看成经典中的经典。像Effective Java 和 Head First 系列我已经反复阅读了很多遍。相信看完本文,根据自己的水平和想要提升的知识侧重,你应该能选出最适合自己的书了。
欢迎加入我们。这是一份针对实习生/毕业生的服务端开发入门与进阶指南。遇到问题及时问你的 mentor 或者直接问我。 建议:
给你推荐一个写得非常用心的Java基础教程:java-basic | 天码营这个教程将Java的入门基础知识贯穿在一个实例中,逐步深入,可以帮助你快速进入Java编程的世界。万事开头难,逐步跟着这个教程走一遍,对Java应该就会有一种入门的感觉了。然后再去学习更高级的主题,或者更深入地学习其中的某些知识点。 入门之后,可以考虑以下学习内容和路径: 1、学习的基本路径首先建立好开发环境非常重要,工欲善其事,必先利其器。做任何开发,首先就是要把这个环境准备好,之后就可以去做各种尝试,尝试过程中就能逐渐建立信心。初学者往往在环境配置中被各种预想不到的问题弄得很沮丧。建立起来环境了,改变世界就靠你的代码了。学习一门编程语言没有太多的诀窍,你可能可以去找一本比较好的经典的入门书籍,现在网络上也有非常多的资料,图文或者视频都可以,根据个人喜好选择。最重要的练习,熟能生巧,在不断的练习中去加深自己对程序语言的理解。接下来你需要了解这三个术语,叫SDK、API跟Lib,分别表示软件开发套件,应用编程接口和库。这三者之间其实有一定的联系,或者是交叉。总体来说,它们都是给我们提供的一些封装了底层功能的基础设施。做Java开发的话,这些东西通常体现为我们所经常说的“框架”。事实上要成为一个资深的Java开发者,对各种API和框架的学习,可能是花时间最多的一个地方。当然你也不可能把所有API或者SDK种的所有内容完全弄懂。在软件开发中也有二八原则,少数的API能够胜任开发中的大部分场景。所以你只需要掌握这些关键部分,当在新场景下遇到不能解决的新问题时,再去查看帮助文档。所以帮助文档的阅读也是技术学习的一个关键因素。了解了基础原理之后一般就能上手开发了,帮助文档可以帮助你在实践中学习。 2、三个神器三个神器,对于软件开发者来说非常重要。 第一个Google,虽然因为各种原因的话有时候我们访问不了,但是这基本上是可以去寻找技术资料最好的方式。 第二个是Github,之前提到过库的概念,Github就是一个可以找到大量第三方库的地方,那是别人给我们封装好的可以复用的代码。比方说造一辆汽车的话,我们经常不要自己造轮子,而Github上可以找到很多优质的轮子,这些轮子还是免费(代码都是开源的),我们应该尽量利用它们来拼装自己的汽车。 第三个是StackOverflow网站,在这个问答网站上你遇到的几乎任何开发问题都能快速找到答案。 3、Java Web全栈开发的推荐学习内容简单总结一下,大概包括下面这些内容。每一部分都可以细化成很多知识点,这只是一个粗略的罗列。把它当做技术地图就好了。开发环境的建立与项目管理:Eclipse、Maven和GitJava编程基础:基本语法、面向对象特性、Java8新特性、更高级库(比如Guava)的使用等前端开发技术:HTML、CSS、Bootstrap和JavaScript基础Spring基础:依赖注入IoC、面向切面编程AOP、SpringBootMVC框架:Spring MVC、Struts等,包括URL路由、模板、表单、Session、拦截器等知识数据访问:关系型数据库、JDBC、Spring JDBC、事务、ORM框架(MyBatis,Hibernate、JPA)成熟应用的关键功能实现:邮件发送、异步任务、缓存、日志等应用的测试和部署 4、JSP/Servlet的相关内容最后专门提一下JSP和Servlet,虽然现在各种成熟的MVC框架已经让Java Web开发基本很少使用JSP和Servlet的原生功能了,基本都做了一层封装。但是这部分基础知识建议初学者还是要认真学习。Web基础,HTTP协议C/S模型,浏览器访问网站过程URL基础知识HTTP消息——请求和响应处理HTTP请求的应用程序Servlet/JSP简介ServletServlet容器,Servlet处理机制,Servlet生命周期部署ServletServletContext, ServletConfigFilter, Event ListenerJSP表达式,scriptlet, declaration在JSP中访问Java类JSP内置对象处理用户输入HTTP方法——GET v.s. POST读取表单数据构建MVC应用Servlets/JSP存在的问题MVC设计模式使用RequestDispatcher在Servlets和JSP中传递数据,EL表达式使用JSTL作为模板JSP Tag LibCore Tag(if, loop)Function Tag(string, fmt, utils)SessionSession&&Cookie基本概念通过Cookie记录用户状态使用Session跟踪用 5、更进一步分布式、深入Java虚拟机、针对不同场景的Java技术框架,到这个阶段已经不仅仅是Java的学习了,而是大型应用场景的技术积累、架构设计的精进了。
作者: 小白程序
链接:http://www.imooc.com/article/7185
来源:慕课网
从学习Java开发到现在虽然也已经快三年了,但是要说到分享一下经验实在是不敢当。权当是对自己的一个总结吧,希望大家不吝指教,互相交流。
照旧,还是现来整理一下我学习Java的一个路线图吧,然后按照这个路线图来谈谈我的一些感受。
一、Java核心
这是学习Java的基础,掌握程度的深浅甚至直接影响后面的整个学习进程。Java的核心主要包括几个部分:
1、初级的有语法基础、面向对象思想。
学习任何一门语言语法都是必须的,因为Java的接近自然语言,也是一种相对比较容易学的语言。同时面向对象编程更是其核心思想,要理解其实只要记住一句话就行了,那就是:一切皆是对象。
2、中级的IO流、多线程、反射及注解等。
IO流程、多线程等是相对比较高级一点的了,通过学习我们会发现这些都很有用而且很有趣。例如我们可以读取一个Excel文件、将一个文件分离,做一个时钟、使用多个线程发送邮件等等很多有意思的事。另外反射及注解更是后面流行框架SSH等的基础,在使用中你便会慢慢感受到它的无穷魅力。
3、高级一点的就是设计模式和框架之类了。
要学习好一门语言,仅仅会使用还是不够的,我们不仅要深入研究其原理,而且还要找到其一些共性的东西,从而减少反复的劳动,让代码可重用、更可靠且更容易被别人理解。
二、前端Web
现在来说Java最流行的应用还是Web开发。那么作为Web开发,对于前台的知识的学习也是必须的,当然并不是一定要按照前端工程师的标准去要求。但是一些基础的知识也是必须要掌握的,毕竟Web应用是前台和后台的一个交互的过程。像HTML、CSS、Javascript等都是基础的知识,另外作为开发人员对目前最流行的Javascript框架Jquery更是必学不可的。
三、数据库
有人说,所有的应用无非就是数据的输入、处理到输出的过程。期间同时可能还会涉及到数据的存储问题。对于结构化的数据,我们常用的还是像Oracle、Mysql和PostgreSQL之类的关系型数据库。同时针对数据库编程还是PL/SQL需要学习。使用Java访问数据库的话还有JDBC。那么对于非结构化的数据以及大数据该如何处理呢?其实这里也已经有了非常成熟的解决方案了,那便是Hadoop。就Hadoop而言他并不是一种思想,更多是一个实现了Mapreduce模式的框架。
四、J2EE
好了,前面这么多准备的工作。下面我们进入正题。作为Java开发,CoreJava是核心,而作为JavaWeb开发,我认为Servlet才是核心。Servlet是服务器端的Java应用程序,但是与普通的Java应用程序不同的是,它是由web服务器来加载启动,即我们常说的Servlet,如Tomcat便是servlet容器。另外谈到J2EE开发,这里有一个重要的模型不得不提一下,很多人其实已经想到了,那便是MVC(模型-视图-控制器)模型。在传统的web开发中,往往是JavaBean充当模型、JSP做视图而Servlet作为控制器。
五、框架
说到框架,其实已经提到了著名的MVC模型,SSH(Struts+Spring+Hibernate)就是一个非常好的实现。对于每一个框架的作用,我想就不用多说了,毕竟这里并不是想写一本教程。另外还有工作流开发的JBPM,搜索引擎Lucence及使系统对外提供接口的webservice应用组件等都是应该要掌握的。
六、服务器
关于服务器,像tomcat、jboss、weblogic及websphere等便不提了,因为太普遍了。这里要说的是Nginx,
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器。其以占有内存少,并发能力强而著称,连新浪、网易、 腾讯这类知名企业也在使用,所以还有什么理由不去学它呢?
七、工具
这里主要介绍几个开发辅助工具。如日志工具Log4j、测试工具Junit、版本管理工具SVN还有项目管理maven等。
另外还有第三方插件Ectable。
八、项目示例
Springside是以Spring框架为核心的J2EE应用参考示例,是JavaEE中的比较主流的技术选型及最佳实践的总结与演示,非常值得一看。把它看透了,J2EE就差不多了甚至是比较厉害的了。
九、话外话
其实说到底,对于技术的学习,有一个规则是通用的,那便是实践。把学习到的东西马上用起来做出一个示例来,我认为是一种比较好的学习方法。首先它是对零散知识的一个自然总结,另外通过一些小示例的实践,可以增加学习的兴趣。而且可以通过示例,深入学习其实现的原理,加深掌握的程度且能更快的应用到实际开发中,提高工作效率。