Java Resource
大学期间主要学的编程语言是Java,做课程设计、毕业项目都是基于Java的;其他语言或多或少接触过(如C、C++、C#、VB),也写过一些小程序或小项目,但学得不深。
毕业后工作的一年时间内,除去培训,剩下大半年的时间都是在使用Java开发Web应用,使用的还是大学学到的一些技术和框架,不过引入了Flex、Ext JS等前端框架。
之后因工作调整,从小白开始逐步转向Oracle DBA,学习大量的主机、存储、网络、数据库等方面的知识,偶尔也打打杂,不直接参与项目,到现在已经又是一年的光阴了。
在做DBA这一年中,利用业余时间学习了Python,可以动手快速、简洁的实现一些自动化脚本、偶然想法、项目原型或者真正投入使用,很喜欢The Zen of Python,也很喜欢“人 生苦短,我用Python”的格言。
最近几个月还学习了Ruby,十分喜欢Ruby、Ruby On Rails中随处可见的DSL,也开始折腾Github和Jekyll。
今天有同学问起Java学习的一些推荐资料,乘此机会正好整理一份,方便以后参考,以下是自己看过和值得推荐的一些资料清单;另外,专门建了一个豆列java resource。
基础
主要熟悉Java语言历史、特点、基础语法以及常用标准库,推荐官方的参考Java SE5.0/6.0 Java Specifications;另外,台湾人良葛格从事Java教育经验丰富,他的Java Essence和Java上下教程写得浅显易懂,很适合Java初学者,看起来不费力,入门快。
《Thinking in Java 4th》很经典,可以作参考书,从Java的基础语法到高级特性(面向对象概念、容器、多线程等)都有涉及,但讲述详实,比较厚,不适合快速入门。
网上有针对Python程序员的Java教程,对比了概念、语法,可供Python程序员快速浏览和熟悉之用,详见Welcome to Java for Python Programmers。
编码规范:参考Java Code Conversion;Google Java Style。
进阶
在了解Java语言基础之后,接下来可以熟悉下Java的网络和数据库编程,一般的Java项目都离不开这两项。
网络编程:参考《Java Network Programming》。
数据库:参考《Java Database Programming with JDBC》,MongoDB Getting Started with Java Drive。
高级
技术点:参考《Java核心技术》卷1,卷2,英文版Volume 1,Volume 2,介绍了Java技术的方方面面,阐述精确到位,叙述深入浅出,包含大量示例,可作参考书。
并发编程:参考《Java Concurrency in Practice》,熟悉Java的并发模型和机制,有助于设计和编写并发性能良好的程序。
经验规则:参考《Effective Java》,熟悉常见问题的解决方案,有助于编写高效、健壮、清晰的代码。
Java解惑:参考《Java Puzzles》,熟悉Java或其类库的陷阱和缺陷而导致的bug,可以帮助了解实现细节。
设计模式:参考《Head First Design Patterns》、JDK里的设计模式,Java编程更偏向设计和架构,因此必须熟悉常用的设计模式,并灵活运用于实际项目中。
JVM:参考《The JVM Specification》,Java虚拟机的规范和细节,对深入编译器和字节码有兴趣的可以参考。性能优化系列,见JVM performance optimization。
Web开发
主要介绍Java在Web开发方面的基础技术和框架,必知必会的知识点见陈皓:Web开发中需要了解的东西,英文版。
1.前端
HTML/CSS/JS:这些是基础,BS架构的应用离不开。参考:(1)Mozilla HTML developer guide(2)学习CSS布局、CSS主流框架;(3)阮一峰 JavaScript标准参考教程。
现在Web开发重前端和设计,技术发展日新月异,更多资料请参考dypsilon/frontend-dev-bookmarks,foru17/front-end-collect。
2.基础
JSP/Servlet:参考良葛格的Servlet/JSP Gossip,Java服务端编程基础,必须掌握。
XML:参考 Java XML Tutorial,《XML开发技术教程》,配套的PPT,编辑配置文件、自动化脚本、Web Service等都离不开,必须掌握。
Web Container:参考《How Tomcat Works》,熟悉Java Web容器的原理以及实现细节,源代码很适合阅读。
3.一些框架
大学时做过一些Web项目基本都是SSH框架,介绍见For Rails。
前端框架: Struts2+,参考IBM出品的Struts2讲义。
数据库ORM框架:Hibernate3+,参考个人制作的Hibernate介绍.ppt。
全能框架:Spring2.5+,参考个人制作的Spring介绍.ppt。
其他框架:Play Framework,基于Java和Scala、新秀;喜欢Rails的人,可以看看两者的对比。
工具
IDE: Vim,Eclipse,MyEclipse。因水平有限,个人认为Java开发并不难,但重在设计,写代码方面更多的是在使用IDE(如自动补全、代码生成、重构等)。推荐使用MyEclipse,别忘了做一些优化。
反编译:JAD,jadeclipse(Eclipse插件),反编译.class文件,查看源代码。
自动化工具:Ant,Maven,用于项目的自动化编译、测试、打包、部署等。
工具箱:进行开发、测试、调试以及文档编排等工具集,参考陈皓:Web工程师的工具箱,英文版。
其他
UML:设计核心、参考手册, UML相关工具一览。从不同维度和层次对项目进行建模(分析和设计),有助于熟悉项目的整体架构。用得比较多的是StarUML;现在也有很多Web版的UML工具,推荐LucidChart。
资源:高质量Java问答集锦;JAVA多线程和并发基础面试问答,原文;41 Websites Every Java Developer Should Bookmark。
社区:iteye,原名JavaEye,由范凯Robbin创立,后被CSDN收购,随后JavaEye被迫改名。JavaEye可以说是国内最好的Java社区,虽不是资深用户,但深爱它的资讯月刊,可以开阔视野。另外,JavaEye后来从Java改用Rails进行了重写,;-)。
资源汇总
- Welcome to Java for Python Programmers
- Java Specifications
- 良葛格 Java Essence
- 良葛格 Java 上
- 良葛格 Java 下
- 良葛格 Servlet/JSP Gossip
- Java Code Conversion
- 《Thinking in Java 4th》
- 《Java Network Programming》
- 《Java Database Programming with JDBC》
- MongoDB Getting Started with Java Drive
- 《Java核心技术》卷1,卷2,Volume 1,Volume 2
- 《Java Concurrency in Practice》
- 《The JVM Specification》
- Java XML Tutorial
- 《XML开发技术教程》
- 《How Tomcat Works》
- 《Head First Design Patterns》
- JDK里的设计模式
- Lisp的永恒之道
- Java SE5 API, Java SE6 API
- Apache Tomcat 6
- UML官方站点
- 陈皓 Java图书Top10
- MyEclipse10优化
blog comments powered by Disqus