java新手学习路线

2024-05-02

java新手学习路线(通用7篇)

篇1:java新手学习路线

阶段 内容 目标

第一阶段(以Tetris项目贯穿)

掌握常见的数据结构和实用算法;培养良好的企业级编程习惯。

掌握面向对象的基本原则以及在编程实践中的意义;掌握Java面向对象编程基本实现原理。Java语言基础

算法基础、常用数据结构、企业编程规范。

Java面向对象

面向对象特性:封装、继承、多态等,面向对象程序设计,基础设计模式等。

实训项目一:Tetris项目开发 第二阶段(以T-DMS V1项目贯穿)

熟练掌握JDK核心API编程技术;理解API设计原则;具备熟练的阅读API文档的能力;为后续的课程学习打下坚实的语言基础。

熟练掌握JavaSE核心内容,特别是IO和多线程;初步具备面向对象设计和编程的能力;掌握基本的JVM优化策略。JDK核心API

语言核心包、异常处理、常用工具包、集合框架。

JavaSE核心

异常处理、多线程基础、IO系统、网络编程、Java反射机制、JVM性能调优(JVM内存结构剖析、GC分析及调优、JVM内存参数优化)、Java泛型、JDK新特性

实训项目二:T-DMS V1项目开发 第三阶段(以T-DMS V2项目贯穿)

熟练的掌握SQL语句;掌握一定的数据库查询技巧及SQL语句优化技巧。SQL语言

SQL语句基础和提高、SQL语句调优。Oracle数据库

Oracle体系结构及系统管理、Oracle数据库高级编程、数据库设计基础。

JDBC核心API(Connection、Statement、ResultSet)、JDBC优化技术(缓存技术、批处理技术、连接池技术)。

XML语法、XML解析(SAX、DOM)、Dom4j组件、Digester组件。

掌握Oracle体系结

构及核心编程技术

JDBC

理解JDBC作为规范的设计原则;熟练掌握JDBC API;具备使用JDBC对数据库进行高效访问的能力。

XML

熟练掌握XML语法规则;理解DOM模型;熟悉Java对XML的各种解析方式。

实训项目三:T-DMS V2项目开发

第四阶段(以T-NetCTOSS电信计费系统贯穿)

TML基本文档结构、掌握CSS基础语法、关于HTML文档块、链接、列表、表格、表单等

掌握HTML基本原理;掌握CSS各种选择器及常见样式设置;熟练使用HTML常用元素。

深入理解

JavaScript语言原理;熟练的使用

JavaScript对HTML DOM进行编程;熟练掌握JavaScript对象对象封装技巧,为后续的JavaScript学习打下坚实的基础。

透彻理解Servlet核心原理;熟练掌握Servlet API;透彻理解JSP引擎工作原HTML/CSS

JavaScript核心

JavaScript语言基础(数据类型、函数、对象、闭包)、Java DOM编程、事件模型、JavaScript面向对象编程。

Servlet/JSP

Servlet生命周期及Servlet服务器、Tomcat部署配置、JSP语法、自定义标记、JSTL和EL表达式、JSP 新特性、Java Web 设计模式。

理;透彻理解标记库原理;熟悉常见的Java Web设计模式;为后续的Java Web开发打下坚实的理论基础。

掌握Ajax的基本通信原理;掌握基于XML和JSON的Ajax数据规则。

掌握JQuery核心API;了解JQuery基本设计原则;了解多种JQuery插件;掌握DWR的基本原理及应用技巧。

熟练掌握Struts2核心要件,特别是Interceptor和

Result;掌握基于模板技术的Struts2 UI组件;掌握基于Ognl的数据共享方式、掌握Struts2各种定制及扩展方式;熟练掌握基于

Struts2的Web开发技巧。Ajax

Ajax基础、XHR对象、Ajax设计模式、JSON技术。

JavaScript框架

JQuery、JQuery插件、ExtJS

Struts2

Struts2核心控制流程、Ognl、Action、Interceptor、Result、FreeMarker、Struts2标记库、Struts2扩展、Struts2应用技巧(输入验证、消息国际化、文件上传和下载、防止重复提交等)。

实训项目四:T-NetCTOSS电信计费系统项目开发 第五阶段(“爱逛网”电子商务平台作为贯穿项目)

Linux高级命令集脚本编程、远程登录、Ant、单元测试技术、Maven构建技术、SVN应用技术。

熟练掌握基于Linux系统的操作技能;可以熟练的完成应用的部署工作;可以熟练的使用开发部署工具。企业应用开发部署环境 Struts2

Struts2核心控制流程、Ognl、Action、Interceptor、Result、FreeMarker、Struts2标记库、Struts2扩展、Struts2应用技巧(输入验证、消息国际化、文件上传和下载、防止重复提交等)。

熟练掌握Struts2核心要件,特别是Interceptor和

Result;掌握基于模板技术的Struts2 UI组件;掌握基于Ognl的数据共享方式、掌握Struts2各种定制及扩展方式;熟练掌握基于

Struts2的Web开发技巧。

重点掌握Hibernate多种关联映射技巧及其实用背景,做到在合适的时候使用合适的关联方式;掌握多种Hibernate查询技巧及优化技术。掌握MyBatis基本原理,SQL映射技巧、缓存机制等; 根据实际情况选择不同的持久层框架; 持久层框架技术

ORM概念、Hibernate核心API、Hibernate实体映射技术、Hibernate关系映射技巧、HQL查询、OSCache及Hibernate缓存技术; MyBatis基本原理,SQL映射技巧、缓存机制、高级使用技巧等。

Spring技术

Spring Ioc基础、Ioc注入技巧、对象高级装配(自动装配、模板装配、组件扫描特性、FactoryBean、对象生命周期)、Spring AOP原理、AspectJ、Spring JDBC支持、Spring事务及安全管理;Spring整合Hibernate、Spring整合Struts,SpringMVC技术。

深入理解Ioc和AOP的基本原理和实现方式;熟练掌握SpringIoc及AOP实现方式;熟练掌握Spring事务管理;熟练掌握Spring与其他组件的整合技术。•

实训项目五“爱逛网”电子商务平台开发

第六阶段(“爱逛网”电商后端数据平台作为贯穿项目)Hadoop

集群安装及原理;hdfs命令行操作;Java操作hdfs的常用API接口;动态添加删除数据节点。集群安装及原理;Hbase命令行操作;Java操作Hbase的常用API接口

MapReduce开发;Flume抽取日志;Hive安装及命令行操作及JDBC操作;通过Sqoop进行Hive和 MySQL之间的数据交换;MaHout入门;分布式集群管理zookeeper集群安装及原理及Java常用操作接口。Kafka集群安装及原理;Kafka常用java接口API;远程RPC方案Thrift;开源ETL工具Kettle。基于Lucene查找Hbase中的数据;基于Redis缓存数据提升平台性能。

系统需求获取及平台架构设计;数据存储底层搭建以及与WEB对接;提升用户体验;通过数据分析发觉用户需求 HBase

Hadoop高级

大数据交换

大数据查询

大数据项目实践

篇2:java新手学习路线

第二:在自己学习或者跟着老师学习完以后。一定要理解知道是怎么回事,在自己完成一些习题,跟着老师或者自己看的例子。不懂一定要问,一定要问和与自己的伙伴交流沟通,一起讨论这是你学习成功的一大法宝。只有通过自己的思考写出来的代码才是自己的,你死记硬背下来的代码肯定不是你的。学程序一定要讨论。不管是未来你要从事产品经理还是做项目,讨论是程序员必须具备的东西

第三:做练习时最好是独立完成。不会的才采用第二点。动手操作的过程中将自己不会的东西记录下来。然后针对性的找人指导。如果你还是一个人在奋战与程序界,如果你想真正的学好,精通JAVA,让自己能够实现梦想过得更好找北大青鸟,可以跟着经验丰富的师资团队、JAVA课程研发者一起学习和交流。每天也能够一起学习更多最新的java项目实战

第四:多思考,多学习,多问,多做一些逻辑方面的题。因为学程序逻辑是最重要的,英语好不好和学好程序没有任何关系,所以不用太在意这个,努力去学习去做,选对方向,找对人帮助,你就能够学好。

篇3:学习Java应该注意的问题

Java自问世以来,以其得天独厚的优势,在IT业界掀起了研究、开发它的浪潮,显示了鹏程万里的美好前景。Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE,JavaEE,JavaME)的总称。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。“连Internet,用Java编程”成为程序设计者的时尚。

2 Java及相关组件的学习顺序和方法

2.1 Java的学习顺序

在美国,80%以上的大学都在教授Java课程,在中国,许多高校都开设了Java课程,许多计算机培训机构都将Java作为主要编程语言来讲授。由于各种原因,很多人反映Java难学,在此根据自己学习的情况谈一下自己的看法。

2.1.1 循序渐进

学习Java应该循序渐进,不要妄想一下子就学会。最好开始找一本篇幅较短的入门书从学习那些最简单、最基本的东西开始。

2.1.2 课堂和视频结合

对于Java技术类的学习,课堂学习更应注意自身独立思考的过程,上课的时候,老师讲课的速度很快为了不遗漏要点,通常要仔细听,认真记,并要及时对技术知识点进行思考。课下要能对所学知识进行简单的理解,做到不会就问。如果选择视频学习的方式,相对来说可以减少记忆压力,其优点在于,通过视频学习应学会慢慢培养自己独立思考的能力,要有时间想,同时对特定的知识点可以重点重复看,重复做思考,这种学习方式类似于跟人做技术沟通。但缺点在于缺少老师指点,对于不会的和重要的知识点无法有更深的体会和把握。因此,最好能将课堂和视频双方面结合起来,进行学习。

2.1.3 了解底层机制

在学习的过程中,最好能够了解Java的底层机制,而不是仅仅停留在表层,不是抄书上的例子运行出结果就可以。要注意,即便对一个简单的例子也要有耐心去琢磨、调试、改动。此外,在学习的过程中一定要动手做、写代码,最好能参与一些实际的项目。

3 学习Java

3.1 分类

学习Java没有捷径可循,“唯手熟尔”,要想学好Java,首先要知道Java的大致分类。自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为3大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入式系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站ERP系统。J2SE开发桌面应用软件比起VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,又有点深奥,而且一般开发者很难有开发环境。所以现在应用最广泛又最好学的就是J2EE。J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。

3.2 学习J2EE

第一,建议从最基本的面向对象的语法开始,明白面向对象的概念和特征,然后熟悉Java常见的类库,其中包括I/O包,Util包,Lang包,Math包等等,这些都是学习Java最基本的内容,一定要熟悉并掌握。此外Java介入的领域很广泛,不同的领域有不同的API(Application ProgrammingInterface,应用程序设计接口),没有人熟悉所有的API,对一般人而言只是熟悉工作中要用到的API。如果做界面开发,那么需要学习Swing/AWT/SWT等API;如果进行网络游戏开发,需要深入了解网络API/多媒体API/2D3D等;如果做Web开发,就需要熟悉Servlet等API。总之,需要根据工作的需要或兴趣发展方向去选择学习特定的API。

第二,学JSP。JSP就是在HTML中嵌入Java代码,它提供了一种简单快速地建立动态网页的技术。所以学习JSP必须要有HTML的基础。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。

第三,该学一学Servlet了。Servlet就是服务器端小程序,它负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。

3.3 Javabean

以往JSP在html中嵌套Java代码的方式较为混乱,而与ASP的主要区别在于SUN提供了Javabean可以把JSP中的Java代码封装起来,便于调用也便于重用。接着就是EJB了,EJB就是Enterprise JavaBean,看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,使用它可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是Weblogic,Websphere这些J2EE服务器)完成了,所以使用时要做的程序代码量很少,大部分工作都在设计和配置中间件上。

3.4 JDBC

JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JD-BC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。

4 编程实践

对Java和J2EE有了一些基本概念之后,就应该练习开发一些程序。

4.1 阅读有实例且带光盘的书籍

最好找一些有实例且带光盘的书来看,这样看到好的程序就可以直接Ctrl+C再Ctrl+V复制粘贴下来,然后保存起来以备后用。还有就是要经常上一些好的Java论坛,遇到不会不懂的问题随时向别人提问,这样可以大大减少闭门造车浪费的时间。

4.2 读开放源码的程序

大家知道开放源码大都出自高手,这些源码设计合理,考虑周到,再加上有广大程序员的参与,所以读源码可以很好地提高编程水平。学Java必读的两个开源程序就是Jive和Pet Store.。Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易地在不同数据库中移植。Pet Store(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,很具有权威性。

5 结语

虽然理论学习和程序训练双管齐下,但是距离学会Java还只是万里长征走完了第一步。具体一个项目需要进行组织设计和开发,靠一些散乱的代码是不可能做出来的,要学会Java最关键的是实际的工作经验,而不是书本上那些凭空想出来的程序。

只有参加Java实际项目的开发,熟悉和掌握开发的思路和过程,并且能够熟练运用Java开发项目的时候,才算是初步学会了Java,剩下的就是在实践中继续提高自己。

参考文献

篇4:新手教师与研究性学习的邂逅

关键词:研究性学习;新手教师;教学设计

进入21世纪,新型劳动力越来越受到重视,而这个 “新”正体现在创新能力上。在这样的时代要求下,以培养未来劳动力为己任的学校,越发重视学生创造力的培养,研究性学习正是为培养创新性人才而提出的课程形式。要帮助新手教师更好地开展研究性学习课程,我们必须首先对核心概念——研究性学习进行明确的认识,这样才能为新手教师开展好研究性学习课程提供更有针对性的建议。

一、研究性学习的概念

目前,学术界对研究性学习概念的界定依然意见不统一,有观点认为研究性学习是一种学习方式,有观点认为研究性学习是一种课程模式。但不管哪一种定义,都对研究性学习的本质特征有统一的认识,学者们都认为研究性学习具有实践性、综合性、开放性、自主性和探究性。研究性学习是要帮助学生改变原先被动接受知识的学习方式,使他们能够更积极主动地参与学习,成为学习的主人。只有这样,学生的创新意识才能逐渐建立,学生的创新能力才能逐渐提升,学生才能更好地得到全面发展。

在《国家九年义务教育课程计划(试验稿)》和《全日制普通高级中学课程计划(试验稿)》中提到研究性学习是综合实践活动的一部分,与社区服务和社会实践、劳动和技术教育、信息技术教育并列。并且,研究性学习活动被视为综合实践活动课程的核心。因此,本文选择将研究性学习视为一种课程模式来进行相关内容的探讨。

二、如何开展研究性学习

1.转变固有的教学观点,确立新的教学观、课程观

研究性学习课程肩负着培养学生创新力的重要使命,新手教师当首先转变自己的思想,认清研究性学习的独特性。

(1)教学观的转变。在研究性学习中,不再只让学生被动接受课本中的间接经验,而是要通过教师的教学,帮助学生在活动中生成意义,引导他们发现问题、探索问题、解决问题,培养学生信息搜集、分析、判断、反思和应用能力。

(2)课程观的改变。原先课程的开展往往严格遵循课程计划或教学指南,学生学习的是静态的课本。而研究性学习课程,是在实际的课堂中不断生成知识的一个情景化的社会过程。学习者被置于课程的中心,除了建构知识,还学会了与他人的交往。另外,也正是因为研究性学习强调在过程中的生成,所以研究性学习的起点、过程和结果均表现出不确定性。在评价方式上,研究性学习也因人而异。

2.调整原先的课程教学设计,进行研究性学习的教学设计

在任何课程开始前,教学设计工作都是很重要的,它甚至可能直接影响到课程实施的成败。

(1)确定研究性学习的目标。为了使学习不落于泛泛之谈,教师也要对研究性学习这样的自主学习活动设定目标。同时确定目标也是帮助教师选择学习材料、安排学习进程并且最终对学生学习情况进行评价的重要的指标和依据。另外,在确定目标时,我们除了设定总目标之外,还要注意设定出大致的分目标,当然分目标不是僵死不动的,它会随着研究性学习课程的不断开展而发生改变。

(2)确定学生的学习基础。学生的学习基础主要是指学生的初始行为和学习特征。学生最终要通过研究性学习提高自身能力,所以,明确好学生的初始行为很重要,这也是为了确定不同学生的不同起点,便于教师在后期的研究性学习工作中对学生提出个性化要求。另外,不同学生他们的学习特征不同,我们应当遵循因材施教的原则,依据不同学生的学习特征,在研究性学习中采用不同的教学引导方式,从而真正帮助每位学生提高自我。

(3)学习环境的选择和设计。知识是有情境性的。研究性学习强调学生对实际生活中问题的探讨,因此对教学环境的设计,教师应当设置真实化的情景。在多媒体技术不断发展的今天,这个实现的可能性也越来越大。

对学习环境的设计可以采用互动模式,包括学生与学生间的、教师与学生间的,也包括教师与教师间的互动。在学生与学生的互动中,学习共同体无形中发展起来。教师作为研究性学习的引导者,不必对学习共同体介入过多,以免影响学习共同体中不同角色学生能力的锻炼,但也不能放任不管,当从宏观上进行指导。因为在合作学习中,学生的想法、解决问题的思路会更加明确、外显,教师更易掌握学生现有的基础情况,从而便于教师确定学生的最近发展区,为学生学习能力提高提出更有针对性的要求。

(4)学习成果的评价。在研究性学习教学设计中,评价设计要从三方面来开展,包括评价指标、评价方法以及根据评价结果对学习过程予以修正。我们当根据操作性目标,制定出测验项目的评价标准,并开展形成性和终结性评价。最后根据评价结果对教学事件进行修正,重新确定学生的初始行为特征。

三、小结

篇5:JAVA学习路线

但有一些一般的步骤:

1.熟悉一种文本编辑器,比如vim, eclipse, notepad++, textmate等。知道哪些是开源的,哪些是闭源的,哪些要收费。养成不用盗版软件的习惯。

2.安装JDK(建议用你的Linux发行版自带的软件包管理器安装openjdk,过程中可能需要读发行版特定的文档)

3.写一个Java的Hello world程序,并用命令行工具javac编译,再用java命令运行这个程序。过程中熟悉源代码、字节码、虚拟机这些东西,以及Java的包(package)对.class文件所在的路径的影响。

3.5.如果这两个命令行工具使用熟练了,可以开始选一个喜欢的集成开发环境,比如Eclipse。当然,养成不用盗版软件的习惯。熟悉一下如何建立“工程”,以及快捷键的使用。

4.学习Java的面向过程编程,包括基本数据结构、表达式、语句、控制流、函数调用。

5.学习Java的面向对象编程,包括类、引用类型和值类型的区别、成员、方法、访问控制、继承、多态、接口、接口实现。顺便学习一下面向对象的基本思想,即对象、消息、封装、继承、多态等,这些通用的内容不是Java特有的。

5.5 这时候应该已经涉及了Java的垃圾回收。要留意即使有垃圾回收的情况下也会发生的内存泄露(如自己设计数组容器,元素是引用,逻辑上删除了元素,但并没有清成null)。

6.学习Java的异常处理,但更重要的是学习什么时候用特殊返回值而不使用异常,什么时候应该抛出异常而不处理异常,知道什么是pokemon catch及其危害,了解为什么Java的checked exception是一个糟糕的特性。如果愿意,同时学习一下Java1.7的try-with-resource语句和AutoCloseable接口。

7.熟悉Java常用的数据结构,如基本的数组类型,以及泛型容器(java.util.*),尤其是java.util.List接口和java.util.ArrayList实现;以及java.util.Map接口和java.util.HashMap实现。(java1.5以前的没有泛型参数的就不用碰了)同时留意一下基本类型int, double等和装箱类型Integer和Double的区别,以及它们是如何自动转换的。

8.熟悉Java标准库里的各种工具,包括日期时间、字符串格式化、IO等。知道文件要自己在finally子句中close(),或者用Java1.7的try-with-resource,不要妄想垃圾回收器会帮你关掉文件。

9.学习一下Java的命名习惯,以及JavaBeans的常规,知道为什么getter/setter比直接操作成员变量好。按这种方式给Java的变量、方法命名。同时看看你的IDE能不能自动帮你生成getter和setter。

10.使用一个第三方的库(比如Apache Commons Lang通用工具库),让你的程序依赖于它的二进制jar包(而不是直接拷贝源代码),用命令行编译、运行(注意classpath等);也熟悉一下如何用你的集成开发环境添加第三方依赖。感受一下手动管理依赖关系的麻烦。

11.学习Maven的使用,试着让Maven帮你解决依赖关系,再试着让Maven帮你创建一个Eclipse工程。再试试用Maven打包发布。

12.学习软件测试,以及JUnit的使用,以及怎么在IDE中使用JUnit。有空看一下coverage工具。

13.读读四人帮写的《设计模式》(这本书是用C++和Smalltalk语言为例子的,但仍然适合Java)。具体的是这本书,http:///Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612 图书馆应该能还借到英文原版,因为我借到过。

接下来就看具体要做哪方面的应用了,看需求。比如(下面的没有顺序)

【....】如果学Java学得不舒服了,学Python。

* 如果对面向对象编程的概念有点不习惯,学Smalltalk。(Ruby也行,但不如Smalltalk经典。Ruby的文档是一大硬伤。)

* 如果嫌Java太啰嗦,学Python

* 如果嫌Java太啰嗦,又想用JVM,自己又有精力,学Scala

* 如果对对象之间的关系有点晕,学一学UML,以及它的一些图,可以对程序和运行进行直观的建模。你的IDE也许有插件可以生成UML图。但是不要太沉迷于这些方法论。

【调试和辅助工具】学习一下你的集成开发环境提供的调试工具,加一些断点试试

* 试试用jconsole或者VisualVM监控另一个jvm的状态。

* 用profiling工具寻找程序中慢的地方。Eclipse有profiling工具。VisualVM也有这样的功能。(如果不介意使用闭源软件的话,也试试JProfiler和YourKit)

* 有的JVM允许在运行时更新代码。Eclipse可以和某些JVM集成。这样你可以频繁修改代码而不用频繁重启JVM。对于某些“重型”工程很有用。(如果不介意使用闭源软件的话,也试试jRebel)

【多线程】学习Java的多线程编程以及lock、condition的用法(包括传统Java的synchronized语句以及新加的java.util.concurrent.*),学习一下如何让线程停下来,以及为什么要频繁确认isInterrupted()而不要用Thread.stop()。了解一下多核处理器、缓存、内存的关系,以及为什么多线程编程这么难。

* 如果还舒服,学习一下Runnable的用法,以及自带的Executer等基本多线程工具。* 应该已经留意到java.util里面的很多容器不是线程安全的,但是java.util.Collections可以帮你创建一些安全的版本。另外关注一下java.util.concurrent里面有ConcurrentMap等容器可供使用。

* 如果有空的话,看看memory model(内存一致性模型)和无锁同步(见java memory model和java.util.concurrent.atomic)。

* 如果还有空,再了解一下除了“共享内存多线程编程”以外有没有别的模型(多进程multi-processing、消息传递message passing等)。

【反射、元编程】学习Java的反射机制,以及Annotation的用法。

* 如果还舒服,试试java.lang.reflect.Proxy的用法。

* 如果仍然还舒服,玩一玩CGLib(一个第三方的库)。

【网络编程】学习一下IP, TCP协议(计算机专业的应该学过,复习一下),学习Socket编程(注意垃圾回收器不会帮你关掉Socket)。

1.如果不是很关心HTTP,看看java.nio,学习单线程轮询式IO复用(Selector)。

* 如果有点不明白nio的意图的话,了解一下c10k问题。

* 如果身体没有异样的话,大概了解一下操作系统(包括C语言)提供的select, poll, epoll, kqueue等接口。

* 如果身体仍然没有异样的话,试着用java.nio写一个文件服务器。

* 如果还有精力的话,上网扒一扒有没有其他的通信库,如netty等。

2.如果关心Web还有HTTP,就学习一下HTTP协议,以及用Java进行HTTP的客户端编程。

* 如果还舒服,学学HTML,写写HTML的静态网页(不需要Java)

* 如果还舒服,用Java写一个基于DOM、XPath或者CSS Selector的网页解析器(爬网页)。

* 如果还舒服,学学Java的Servlet接口(先别学jsp)进行Web服务器端编程。学学标准的Servlet容器怎么用,包括web.xml的用法以及listener、filter等概念。以及某个Servlet容器(如Jetty或者Tomcat)的具体用法。

* 如果仍然还舒服,试着学一种模板语言(如haml, velocity, freemarker,【还有其他更好的框架吗?我不知道】, String.format,如果真的想学JSP的话JSP倒是也行,但不推荐)。* 如果仍然觉得舒服,学学Spring框架中的Web框架,或者Struts,看你的口味。* 如果还舒服,看看Spring Bean Container以及里面各种乱七八糟的工具。

* 如果还舒服,或者有需求,了解一下什么是RESTful Web Service,复习一下HTTP,找找适合的Java工具。

* 你可能会觉得Jackson是一个解析JSON用的好用的东西。

【数据库】学习一下关系数据库(计算机专业的应该学过,复习一下),包括SQL。选一个数据库管理系统熟悉一下(比如MariaDB,或者(如果你不讨厌Oracle的话)用被Oracle收购了的MySQL。先脱离Java单独学学)。然后看它们的官方文档教你怎么用Java连接这种数据库。这中间会涉及到JDBC接口。同时一定要知道SQL注入安全漏洞,以及掌握如何用PreparedStatement防止注入!。建议看 http://bobby-tables.com/

* 可能中间会涉及“事务”问题,让你不知不觉地开始去了解java transaction api(JTA)。* 如果还舒服,学一学对象关系转换(如Hibernate)。

* 也可以学学非关系数据库,以及如何用Java访问它们。

【日志记录】学习一下slf4j和logback的用法。

* 如果有精力的话,以及大概知道世界上有多少种Java日志框架,以及slf4j是怎么桥接这些框架的。

【构建(build)系统】学习一下Ant的用法。

* 如果还舒服的话,学习一下用Ivy从Maven的仓库里下载软件包,解决依赖关系。

【版本控制】学习一种分布式版本控制器(如Git、Mercurial、Bzr、Darcs等,推荐Git)的基本用法,以及如何用它管理Java工程。希望你已经开始使用Maven了。然后了解一下如何在IDE中使用(Eclipse自带Git插件)。

* 如果感觉很舒服的话,为你们实验室搭建一个Linux+SSH+Git服务器,装个GitLab(一种Web界面)。并说服同事们不要再用SVN、CVS或者SourceSafe等老旧的“集中式版本控制器”了。

* 开设一个GitHub账户。如果你不喜欢Git,就用BitBucket等。

【持续集成】自己(或者为你们实验室)搭建一个持续集成(Continuous Integration)服务器,定期编译你的程序。

【零碎工具】淘一淘java.nio.files里面有什么好用的东东,然后再淘一淘Apache Commons Lang和Commons IO里有什么好用的工具。Commons Logging就不要再用了,用SLF4j和Logback。

【XML】学学XML、DOM、XPath。XML这东西到处都可能用到。也可以用它写自己的配置文件。

* 如果觉得不舒服了,就学学JSON和YAML。

* 如果还是不舒服,就学学文本文件解析。

【语法分析和编译器】学学Antlr或者别的Parser Generator的用法

* 如果觉得舒服,自己写一个计算器。

* 如果还觉得舒服,自己写一种Domain-Specific Language(DSL)。

【高效容器】学学FastUtil或者Trove,如果你需要进行大量数值运算的话。

【分布式计算】学学MapReduce的思想以及它的实现。

* 如果还舒服,学学Scala语言以及号称比MapReduce快得多的Apache Spark。

【进程间通信】看看ActiveMQ、MINA和RMI。

【其他语言(JVM)】学习另一门跑在JVM上的语言或者实现(如Groovy、Scala、Clojure、JRuby、Jython、JavaScript……)

* 如果还舒服,学一学Java Scripting API(注意不是JavaScript。给个链接: http://docs.oracle.com/javase/6/docs/technotes/guides/scripting/programmer_guide/),然后试着在自己的Java程序里嵌入脚本。

【其他语言(非JVM)】学习另一门通用脚本语言(如Python、Ruby,其实perl也行,但不推荐),知道什么时候Java不是最好的选择。

【Java语言和Java虚拟机】通读一遍(一目十行地读,不用细读)Java Language Specification,以及Java Virtual Machine Specification。

* 了解以下解释器(interpreter)、编译器(compiler)、即时编译器(just-in-time compiler)和优化器(optimiser)的概念。

* 如果对编译器的话题不感到畏惧,了解一下method JIT和tracing JIT的概念和区别。

【内存管理】学学垃圾回收的几种基本算法,包括mark-sweep、mark-compact、semi-space、generational、mark-region等,各自的性能,以及为什么朴素的reference counting是不完整的。知道为什么finalizer性能很糟糕,而且标准并不要求finalizer在程序退出前一定会执行。* 如果还舒服,了解一下如何设置Java虚拟机的堆大小限制(如HotSpot虚拟机的-Xmx选项等)。

* 了解一下Java里的WeakReference以及SoftReference和PhantomReference,以及它们什么时候有用,以及为什么它们实现起来有些困难。

* 如果有精力,了解一下Hotspot虚拟机的内存管理算法是什么样的。

【动态装载】学学Java的动态装载(class loading)

* 如果还舒服的话,学学OSGI以及它的一种实现(如Felix或者Equinox)

* 如果仍然很舒服的话,学学写基于Eclipse平台的程序。不是Eclipse集成开发环境,只是利用他们的图形框架,写自己的应用程序。

* 如果还觉得舒服的话,写Eclipse集成开发环境的插件。

【本地/外语接口】学习一下Java Native Interface(JNI),试着写一个Java和C语言混合编程的程序。

* 如果觉得不舒服了或者觉得欲仙欲死,就学一学Java Native Access(JNA),试一试不用任何胶水代码而从Java直接装载C库,直接调用C函数。

* 如果连JNA也懒得学,就学一学SWIG,自动生成绑定。

* 如果觉得舒服,就学一学Java Virtual Machine Tooling Interface(JVMTI),用C程序来监视JVM的状态。

【密码学】学一学密码学,包括编码、密码分析、攻击、对称密钥、公钥系统、数字签名、哈希算法等,看看Java有没有实现。

* 如果觉得有点不舒服(你应该不会觉得舒服吧,除非你是学密码学的,要不然总会觉得自己写的程序有安全漏洞),就写一个“人品计算器”来放松一下,要求每次输入同一个姓名,得到的人品值是固定的,但又要让人无法用别人的人品值猜自己的人品值。

【移动终端】学一学Android开发。

* 如果有精力的话,看看Dalvik虚拟机是怎么回事。

* 建议买一个iPhone或者iPad,或许你再也不想用Android手机或者平板了。

【历史】如果觉得有些无聊,就去挖一挖历史上比较火的可能和Java相关技术,比如:* Applet,想想它比起html5+css3+javascript的缺点在哪里。

* AWT、Swing,想想为什么很少有人用Java写图形界面程序。你觉得Swing的程序看上去舒服吗?中国人和残疾人喜欢用Swing程序吗?

* JNDI,想想它比起Spring Bean Container的缺点在哪里。

* JSP,想想它比起MVC结构的缺点在哪里。

* WSDL/SOAP,把它们和XML-RPC、RESTful Web Service比较一下。

* XSLT,以及为什么它是图灵完备的。可是它真的比Java本身更好用吗?

* Log4j、java.util.logging、Apache Commons Logging,各自有什么问题,以及Log4j的作者本人为什么又开发了SLF4j和Logback?

* Java最早是为什么设计的?

篇6:Java web开发学习路线

Java web开发学习路线

Java web开发是什么?

Java web开发,是用Java技术来解决相关web互联网领域的技术总和。web包括:web服务器和web客户端两部分。Java在客户端的应用有java applet,不过使用得很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP和第三方框架等等。Java技术对Web领域的发展注入了强大的动力。

Java web 开发 Java web开发学习路线 一:入门阶段

学习目标:Java程序员

1: 熟悉jdk,jvm,eclipse,安装于配置jdk 2:熟悉并掌握java的基础语法,类,抽象类,接口,内部类等概念 3: java核心编程,如输入输出流,多线程,集合,XML,正则表达式等 4:java图形化编程,如awt,swing 5:java网络编程,Applet,Socket,TCP/IP,NIO等 6:java高级特性,如反射,泛型,自动装箱与拆箱等 二:提高阶段

学习目标:java初级软件工程师

1:网页开发技术,如HTML,CSS,JavaScript,AJAX 2:java与数据库开发技术,如SQL,MySql,Oracle,SQLServer,JDBC 3:JavaWeb核心开发技术,如JavaBean,Servlet,EL等 三:加强阶段

学习目标:Java中级软件工程师 1:Hibernate框架 2:iBATIS框架 3:Struts1框架 4:Struts2框架 5:Spring业务层框架 四:进阶阶段

学习目标:Java高级软件工程师

1:Java Web企业级开发技术,如会话Bean,消息驱动Bean 2:Java Web分布式开发技术,如JTA,JAAS,JNDI 3:Java Web开源技术与框架,如工作流,规则引擎,缓存,报表 五:高级阶段

学习目标:Java系统架构师

1:Java与UML,如对象图,用例图,组件图,部署图 2:Java设计模式:外观、适配单观察者、装饰等 3:Web服务架构:WebService,SCA,SOA,ESB,EAI 4:面向资源架构:ROA,REST 5:面向云架构:COA、SaaS、分布式计算、云计算

篇7:Java 程序员学习路线图

JavaSE

Java核心语法、Java核心API、面向对象程序设计、Java容器类(集合)、GUI 用户界面编程、I/O体系结构、多线程并发模型、网络编程、数据结构.掌握Java核心语法与面向对象思想,能熟练运用常用设计模式与编程技巧完成桌面应用或网络通信类程序的开发.140

Java5.0新特性

Autoboxing/unboxing(自动装包/拆包)、Enums(枚举)、Varargs(可变参数)、Static Implements(静态导入)、for each(增强)循环、Generic(泛型)程序设计、Annotation(注释)无侵入式程序设计等

掌握全新java设计思想, 把握未来java技术发展趋势.16

Java高级技术

Java反射(Reflect)与动态代理(Dynamic Proxy)

深入研究Java语言高级技术,设计更加灵活、扩展性更强的动态程序.Java开发IDE

各种Java常用开发工具(如:Eclipse、NetBean等)的使用

掌握Java开发IDE的使用与代码调试技巧

软件测试

黑盒、白盒测试.Java测试框架Junit.理解测试的重要性.学习使用Juni进行单元测试、参数化测试、测试套件的开发和测试运行器的使用...............第二阶段: 数据库编程

Oracle/SQL语言

以Oracle为平台,介绍Oracle数据库的安装、Oracle体系结构、物理组件、权限分配、数据管理、分析各种关系数据库设计的常见问题,深入讲解数据库设计范式.全面讲解各类SQL语句的使用和优化策略.深入学习Oracle数据库对象:index(索引)、view(视图)、sequence(序列)、tirgger(触发器)、comment(注释).理解Oracle数据库体系结构,掌握Oracle数据库基本操作,数据库设计,开发和管理知识,熟练掌握SQL和Oracle对象使用.PL/SQL

PL/SQL语法,作用.使用游标、存储过程、函数、触发器解决数据库性能问题.掌握PL/SQL的使用,能够使用存储过程开发高效的数据处理系统,解决数据库性能瓶颈并

实现数据优化.MySql

以MySql为平台,介绍MySql数据库的安装、权限分配、数据管理.数据库使用.掌握MySql数据库的使用.JDBC

使用Java操作数据库,包括:数据库连接、结果集处理、存储过程调用、元数据、大数据类型处理、事务管理,批更新,可滚动、可更新的结果集,SQL3.0新特性,连接池技术,数据库应用架构.熟练掌握Java数据库编程技巧,能使用高级API、DAO编程模式编写高性能的数据持久层应用....................第三阶段: Web应用

XML

XML的概念与作用、基本语法、验证、XML模式定义(DTD、Schema)、XML解析(SAX、DOM)、Jdom和Dom4j、xpath、XSL.掌握XML使用及XML文档的处理技术.使用XML进行信息配置、数据存储以及数据交换.Html

介绍Web原理.Web页面开发的基本过程,超文本标记语言(HTML)基本标签的使用,CSS 层叠式样式表

掌握HTML基本标签的使用,能利用CSS优化页面设计的方法

JavaScript

JavaScript 脚本语言基本语法,常用函数,JavaScript高级DOM编程及页面组件控制掌握基于对象的JavaScript程序设计,能通过W3C DOM模型完成动态页面脚本开发

Web容器之Tomcat

Tomcat的下载、安装、启动分析、体系结构、基本配置、应用程序部署、管理和性能调优.掌握使用Tomcat的使用.Java Web编程Servlets

HTTP协议详解,Servlet核心对象操作,Servlet生命周期,Session与Cookie的应用场景,过滤器与监听器.分层结构.全面掌握Servlet 2.5 API的使用,能够独立分析设计基于N层体系结构的Web 应用,熟练使用各种Java EE应用服务器

Java Web编程JSP

JSP介绍、创建、部署JSP程序,JSP的三个指令、六个动作和九个内置对象.JSP中异常处理,自定义标签,EL和JSTL

掌握JSP2.0规范技术,掌握JSP进行动态页面开发的专业技术,能结合Servlet完成B/S应用的设计与开发工作

...............第四阶段: 流行框架技术

J2EE容器之JBoss

JBoss的下载、安装、启动分析、体系结构、基本配置、应用程序部署、管理和性能调优.掌握使用JBoss的使用.Struts

MVC设计思想,Strust1的体系架构、控制器组件、视图组件、框架的扩展、国际化、验证框架、常用标签库等.理解MVC模式,掌握基于struts1的java EE解决方案

学习Struts1和WebWork结合而成的Struts2.包括:Struts2的无侵入设计,控制器组件、视图组件、动态方法调用、包、拦截器、annotaction的支持、国际化、验证框架、常用标签等.深入学习Struts2,完成从Struts1到Struts2的Java Web应用的升级.Hibernate

学习领域建模思想与O/R Mapping,各种对象关系映射、实体状态、继承关系、组件映射、查询缓存与二级缓存配置、事务锁机制与性能调优.能以领域建模思想完成持久化层的设计,使用Hibernate完成持久化层的开发工作.40

AJAX

全面讲解AJAX应用的设计与开发方式,内容包括: XMLHttpRequest对象操作、W3C DOM模型操作、jQuery与DWR快速开发Ajax.能通过AJAX开源框架实现Web 2.0应用中的异步通讯.掌握DWR的开发原理,并熟练使用DWR简化Ajax的开发

SVN/CVS及编程规范

掌握SVN/CVS的配置和使用;软件编程规范

SVN/CVS的配置和使用;软件编程规范

Spring

学习最新Spring2.0技术.包括:IOC、AOP,使用Spring的ORM支持完成DAO层的开发,事务层管理,Springde MVC框架,使用Spring与EJB3、Struts1(Struts2)、Hibernate等流行框架进行整合.通过Spring完成多层架构应用的设计与开发工作,掌握面向接口编程的重要性.通过Spring去简化企业开发.第五阶段: JavaEE企业应用

Linux

学习Linux的安装和基本操作,通过SSH2访问Linux,在Linux安装JDK,安装Web服务器、安装数据库服务器,安装和部署Java应用程序。

掌握Linux的基本操作,掌握在Linux发表基于Java的Web应用程序。

OOAD

学习面向对象的分析和设计

掌握面向对象的分析和设计。

Java设计模式

学习Java经典设计模式。包括单例模式、命令模式、工厂模式、拦截器模式等。学习经典的软件设计思想,能够写出易于维护和更容易扩展性的代码。

8J2EE容器之WebLogic

Weblogic的下载、安装、启动分析、体系结构(Domain、Cluster、Machine、Server、Administrative Server、Managed Server、Node Manager)、基本配置、应用程序部署、管理和性能调优.集群的概念和配置.掌握使用WebLogic的使用.JAVA EE/EJB

高级编程

创建基于JAVA EE5.0规范的EJB中间件学习将EJB融入分布式企业级应用程序的编程技术,学习Session Beans,Entity Beans,Message-Driven Beans,JTA/JTS,JAAS,JNDI,RMI等技术同时讲解最新EJB3.0技术规范。

掌握基于EJB3.0规范的企业应用架构编程接口及访问EJB技术实现,掌握开发和运行基于 JAVA EE 应用程序所遇到的常见问题,包括安全性,伸缩性和负载平衡管理等。

Web Services

上一篇:新生入学心理健康教育下一篇:深孔钻使用作业指导书B