大学期间主要学的编程语言是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 ConversionGoogle Java Style

进阶

在了解Java语言基础之后,接下来可以熟悉下Java的网络和数据库编程,一般的Java项目都离不开这两项。

网络编程:参考《Java Network Programming》

数据库:参考《Java Database Programming with JDBC》MongoDB Getting Started with Java Drive

高级

技术点:参考《Java核心技术》卷1卷2,英文版Volume 1Volume 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-bookmarksforu17/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: VimEclipseMyEclipse。因水平有限,个人认为Java开发并不难,但重在设计,写代码方面更多的是在使用IDE(如自动补全、代码生成、重构等)。推荐使用MyEclipse,别忘了做一些优化

反编译:JADjadeclipse(Eclipse插件),反编译.class文件,查看源代码。

自动化工具:AntMaven,用于项目的自动化编译、测试、打包、部署等。

工具箱:进行开发、测试、调试以及文档编排等工具集,参考陈皓: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进行了重写,;-)。

资源汇总



blog comments powered by Disqus

Published

09 October 2013

Categories

Tags

Github