做Java开发都需要学什么?怎么学?

Python011

做Java开发都需要学什么?怎么学?,第1张

做Java开发都需要学什么?怎么学?

java开发主要学习的课程内容有:

1.JAVA SE基础

Java 开发前奏 环境搭建

Java程式设计基础

面向物件

常用 类 API

泛型 集合

异常处理

IO

多执行绪

网路程式设计

类载入机制与反射

设计模式

2、JavaWeb核心技术

HTTP 协议   WEB伺服器 TomCat

Servlet

request与response

Cookie与Session

JSP

资料库高阶开发

AJAX

JavaWEB高阶开发技术

基础加强之框架载入

专案管理

3、核心框架

Struts2

Hibernate

Spring

Maven

MyBatis

JPA

SpringData

SpringMVC

SpringSecurity

Shiro

Linux

专案穿插

4、大资料

大资料架构基础

云端计算基础

Shell

环境搭建

Hadoop体系

HDFS分散式档案系统

资料汇入

5、综合学习,Java大资料课程

Java大资料课程定位中高阶Java开发工程师,课程内容涉及面广,内容深

课程涵盖了JavaWeb,资料库,企业流行框架,JavaScript等企业最佳实践、云端计算大资料课程、内容由浅入深,剖析原理,掌握实用技术。

多个企业级的大型真实专案学习;

Java大资料课程内容来源于企业,课程包含企业中使用最多、最热门的核心技术和框架;

java的学习方式如下:

1、网上参加网路线上教育直播课程,通过边学习网上操作专案实战学习,一般课时为6个月左右。

2、参加线下的java型别的培训班,以全日制上课模式,一般为6个月——2年时间左右。

3、如果有一定的程式设计和计算机经验,自学可以选择看书、看视讯教学,然后操作实战方式。学习时长未知。

java开发都需要学什么

”,“我看完了Thinking in Java, 可以学习J2EE了么?”。于是就有了写这篇文章的想法,希望能帮助初学者少走一些弯路。也算是对自己几年来学习Java的一个总结吧。 在开始之前有必要再讨论一下J2ME,J2SE,J2EE这些概念。J2ME,The Micro Edition of the Java 2 Platform。主要用于嵌入式Java,如手机,PDA等等。J2SE,Java 2 Platform,Standard Edition,我们通常所说的JDK(Java Development Kit)包含在此,是J2EE的基础。J2EE,Java 2 Platform,Enterprise Edition,就是所谓的企业级Java。这些只是从API级别上的划分,实际上Sun给J2EE的定义是:开发基于元件的多层的企业级应用的规范。也就是为各种不同的技术定义一个Java的规范,使这些不同的技术结合起来,在Java平台上构建强壮的企业级应用。从这一点来看,J2EE这个概念应该是涵盖J2ME,J2SE的。比如一个典型的J2EE应用,网上商店,它支援web方式下订单,也支援手机下订单。显然必须用到J2SE,J2ME。所以也就不存在所谓的从J2SE转向J2EE的问题了,只是后者包含的范围更广而已。 来看看Sun给出的J2EE 相关技术主要分为几大块。 1. Web Service技术 - Java API for XML Processing (JAXP) - Java API for XML Registries (JAXR) - Java API for XML-based RPC (JAX-RPC) - SOAP with Attachments API for Java (SAAJ) 2. 元件模型技术(Component Model Technologies) - Java Servlet - JavaServer Pages - JavaServer Faces - Enterprise JavaBeans - Java Message Service - J2EE Connector Architecture 3. 管理技术(Management Technologies) - J2EE Deployment Specification - J2EE Management Specification - J2EE Client Provisioning - Java Authorization Contract for Containers 4. 其他相关技术(Other J2EE Technologies) - JDBC - Java Data Objects (JDO) - CORBA (Java IDL and Java RMI-IIOP) - JavaMail - Transactions 如此之多的技术难免使初学者无所适从,望而却步。即使是一位经验丰富的J2EE开发者,又有几个人敢说J2EE相关的技术我都熟练掌握了。不过作为一名普通J2EE应用程式的开发者来说,我们只需要重点学习其中的一部分技术就可以了,对于其他部分只要做到心中有数,哪天需要用到了知道跑哪里去找到资料就行了。以我个人的观点,下面这些技术是一般J2EE应用开发人员所必须熟练掌握的。Java Server Page,Java Servlet,Enterprise JavaBean,JDBC,Transactions。还有JAXP等XML相关技术,Java Message Service,Java Mail,JDO等等是最好应该掌握的。其他Management Technologies,Connector Architecture等等主要是给容器提供商中介软体提供商参考的,应用开发者不需要怎么关心,等用到了再去学习也不迟。 、、 Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE。这三块相互补充,应用范围不同。 J2SE就是Java2的标准版,主要用于桌面应用软体的程式设计; J2ME主要应用于嵌入是系统开发,如手机和PDA的程式设计; J2EE是Java2的企业版,主要用于分散式的网路程式的开发,如电子商务网站和ERP系统。 先学习j2se 要学习j2ee就要先学习j2se,刚开始学习j2se先建议不要使用IDE,然后渐渐的过渡到使用IDE开发,毕竟用它方便嘛。学习j2se推荐两本书,《java2核心技术一二卷》,《java程式设计思想》,《java模式》。其中《java程式设计思想》要研读,精读。这一段时间是基本功学习,时间会很长,也可能很短,这要看学习者自身水平而定。 不要被IDE纠缠在学习java和j2ee过程中,你会遇到五花八门的IDE,不要被他们迷惑,学JAVA的时候,要学语言本身的东西,不要太在意IDE的附加功能,JAVA程式设计在不同IDE之间的转换是很容易的,过于的在意IDE的功能反而容易耽误对语言本身的理解。目前流行的IDE有jbuilder,eclipse和eclipse的加强版WSAD。用好其中一个就可以了,推荐从eclipse入手j2ee。因为Jbuilder更适合于写j2se程式。 选择和学习伺服器使用配置当你有了j2se和IDE的经验时,可以开始j2ee的学习了,web伺服器:tomcat,勿庸置疑,tomcat为学习web服务首选。而应用伺服器目前主要有三个:jboss、weblogic、websphere。有很多专案开始采用jboss,并且有大量的公司开始做websphere或weblogic向jboss应用伺服器的移植(节省成本),这里要说的是,学习tomcat和jboss我认为是首选,也是最容易上手的。学习伺服器使用配置最好去询问有经验的人(有条件的话),因为他们或许一句话就能解决问题,你自己上网摸索可能要一两天(我就干过这种傻事),我们应该把主要时间放在学习原理和理论上,一项特定技术的使用永远代替不了一个人的知识和学问。 学习web知识如果你是在做电子商务网站等时,你可能要充当几个角色,这是你还要学习: ,可能要用到dreamwave等IDE。 Javascript,学会简单的资料校验,资料联动显示等等 J2eeAPI学习学习j2eeAPI和学习伺服器应该是一个迭代的过程。先学习jsp和servlet程式设计,这方面的书很多,我建立看oreilly公司的两本《jsp设计》和《java servlet程式设计》,oreilly出的书总是那本优秀,不得不佩服。学习jdbc资料库程式设计,j2ee专案大多都是MIS系统,访问资料库是核心。这本应属于j2se学习中,这里拿出来强调一下。学习jndi api,它和学习ejb可以结合起来。学习ejb api,推荐书《精通ejb》经过上面的这些的学习,大概可以对付一般的应用了。有人说跟着sun公司的《j2ee tutorial》一路学下来,当然也可以。 学习ejb设计模式和看程式码(最重要)设计模式是练内功,其重要性可以这么说吧,如果你不会用设计模式的话,你将写出一堆使用了ejb的垃圾,有慢又是一堆bug,其结果不如不用ejb实现(ejb不等于j2ee)无论学习什么语言,都应该看大量程式码,你看的程式码量不到一定数量,是学不好j2ee的目前有很多开源的工程可以作为教材: jive论坛 petstore sun公司 dune sun公司等等,研读一个,并把它用到自己的工程中来。 J2ee其他学习当你渐渐对j2ee了解到一定深度时,你要开始关注当前领域中的一些技术变化,J2ee是一块百家争鸣的领域,大家都在这里提出自己的解决方案,例如structs,hiberate,ofbiz等等,学习这些东西要你的专案和目标而定,预先补充一下未尝不可,但不用涉及太深,毕竟学习原理和理论是最最重要的事。 目前常见j2eeAPI JavaServer Pages(JSP)技术1.2 Java Servlet技术2.3 JDBC API 2.0 Java XML处理API(JAXP)1.1 Enterprise JavaBeans技术2.0 Java讯息服务(JMS)1.0 Java命名目录介面(JNDI)1.2 Java事务API(JTA) 1.0 JavaMail API 1.2 JavaBeans启用架构(JAF)1.0 J2EE联结器体系结构(JCA)1.0 Java认证和授权服务(JAAS)1.0 学习上面的某些API要以你的专案而定,了解所有他们总之是有好处的上面印证了大家说的一句话,java语言本身不难学,但是技术太多,所以学java很费劲。回想一下,基本上每个初学者,在刚学习java的时候可能都会问别人这么一句话,你怎么知道的哪个方法(api)在哪个包里的?呵呵,无他,唯手熟尔。

一般分为四个学习阶段,

第一阶段:小型桌面应用开发

阶段目的:掌握JAVA语言的语法,理解面向物件的程式设计思想,能够熟练使用JAVA语言开发小型桌面应用。

基础技能训练:作业系统与网路技术、JAVA面向功能物件程式设计、JAVA核心程式设计、JAVA网路程式设计

第二阶段:中小型网站应用开发

阶段目的:掌握资料库设计与开发技能,熟练使用JAVAEE元件技术开发中小型网站应用。

资料库(Oracle资料库管理及开发)、UI开发(WEB页面开发基础、XML、Ajax)、JAVAEE元件开发(jsp、servlet、jdbc)、框架技术(struts2.0、hibernate、spring、springMVC、mybatis)

第三阶段:软体工程工业实践

阶段目的:熟悉软体工程流程及规范,使用以前三个阶段所学的技能,进行软体工程工业实践。

软体工程方法论、软体工程专案实践

第四阶段:职业素质培养及就业

阶段目的:提高团队协作能力、职业道德、沟通能力和面试技巧,成功面试,成为标准IT职业人。

职业素质培养(职业道德、专案经理座谈、面试技能)、就业。

学java开发都需要学那些东西?

java分初级中级高阶三个阶段

初级学的是基础知识,包括IO流,集合,封装,继承,多型,抽象,介面等等零散又多的知识。

中级阶段会学习一些技术框架,js,jquery,jdbc,解析xml,,jsp等等,前后台的东西(前台是页面,后台是java程式码)

高阶阶段会学习框架,典型的三大框架必学的(Struts2,hibernate,spring),还有springMVC,Mybaties(ibaties),框架只是减少你的程式码量,更加方便,业务逻辑还是要自己写的。还有框架的整合SSH(struts2+hibernate+spring),SSM(spring+springMVC+mbaties)

PS:在学习高阶之前,你可能觉得初级和中级的东西没啥用,因为你还没有用到,学完框架以后就会用到了。

做JAVA开发需要学什么课程.

第一阶段:Java语言基础

Java语言基础

1、面向物件思维JAVASE

2、(类载入机制与反射,annotation,泛型,网路程式设计,多执行绪,IO,异常处理,常用API,面向物件,JAVA程式设计基础)

3、Java8新特性

第二阶段:资料库

JAVA战狼班 资料库

1、Oracle(SQL语句、SQL语句原理、SQL语句优化、表、检视

2、序列、索引、Oracle资料字典、Oracle 资料库PL/SQL开发

3、资料库设计原则、 MySQL 、 JDBC

兄弟连JAVA战狼班第三阶段:Web基础

Web基础

1、HTML5(H5)基本文件结构、连结、列表、表格、表单

2、CSS 基础语法、盒子模型、浮动布局、定位

3、JavaScript语言基础、DOM 程式设计、事件模型等),JQuery,AJAX框架,XML,BootStrap元件

第四阶段:Java Web技术和主流框架

Java Web技术和主流框架

1、JSP&Servlet、struts2,hibernate4,spring4,JPA,maven

2、SpringData,SpringMVC,MyBatis,SpringSecurity,shiro,Nginx

第五阶段:Linux

Linux

1、Linux安装、熟悉Linux的基础命令、vi编辑器的使用、awk和sed命令使用、使用者和组

2、档案及目录许可权管理、使用ACL进行高阶访问控制、网路配置和软体包安装、启动流程和服务管理

3、系统监控和日志管理、程序管理和计划任务、ssh远端登入、shell基础和shell指令码。

第六阶段:大资料技术(Hadoop和Spark)

大资料技术(Hadoop和Spark)

1、Hadoop (Hadoop基础和环境搭建,HDFS体系结构,MapReduce;Hadoop的丛集模式、HDFS联盟,利用ZooKeeper来实现Hadoop丛集的HA(高可用性)功能

2、Yarn的任务排程机制,Apache Hive,Pig资料处理,整合Hadoop和Sqoop

3、Flume以及Apache Kafka来实现资料的交换,安装部署HBase,Storm)

4、Scala 语言(Scala环境搭建、Scala基础语法、模式匹配、过载与构造器、Map与reduce、元组、继承、StringContext,Option Some None,Tuple;集合方法和运算,future 物件同步处理和非同步处理返回结果)

5、Spark(Spark搭建,Spark-shell 的使用,Spark-submit 提交应用, Spark的核心设计和实现,并对核心中的实现架构、执行原理进行详细的讲解;Spark生态体系中的各个元件,包括:Spark Core,Shark,Spark SQL和Spark Streaming等等)

第七阶段:专案

专案

1、China-UCSP 专案 SSM(Spring+SpringMVC+MyBatis)

2、使用者关系管理系统 S2SH+Maven+Nodejs+MySQL技术实战开发

3、电子商务交易平台 S2SH+Maven+Shiro+Oracle

Java语言程式设计、C/C++/C#程式设计、资料结构、网页设计与制作、资料库原理与应用、J2EE/.Net软体架构、Oracle资料库、软体测试、IT专案管理、软体工程与实践。

学ios开发都需要学什么东西?

首先是它的开发语言Objective-C,它是C的超集,支援面向物件程式设计,是最早的面向物件语言之一。做iPhone or iPad开发,不免会用到各种控制元件,需要对这些控制元件的用法做到灵活运用。这些控制元件基本上都来自于UIKit.framework.如果想要设计出可重用性,可扩充套件性的应用的话,还需要对程式设计思想及面向物件程式设计要有所了解。

java入门教程《21天学通java2》第三版

《Java编程思想》(thinking in java)第三版

TOMCAT HOME是指安装tomcat的主目录,并非是说目录的名字就叫“TOMCAT HOME”。

JAVA编程详解

Think in JAVA(有点难度,推荐在熟悉之后再看)

刚开始其实只要是基础的都能看,我给你个好的JAVA书籍下载站点:

http://www.javafan.net/index.jsp

学习一门新的知识,不可能指望只看一本,或者两本书就能够完全掌握。需要有一个循序渐进的阅读过程。我推荐Oreilly出版的Java系列书籍。

在这里我只想补充一点看法,很多人学习Java是从《Thinking in Java》这本书入手的,但是我认为这本书是不适合初学者的。我认为正确的使用这本书的方法应该是作为辅助的读物。《Thinking in Java》并不是在完整的介绍Java的整个体系,而是一种跳跃式的写作方法,是一种类似tips的方法来对Java很多知识点进行了深入的分析和解释。

对于初学者来说,最好是找一本Java入门的书籍,但是比较完整的循序的介绍Java的语法,面向对象的特性,核心类库等等,在看这本书的同时,可以同步来看《Thinking in Java》,来加深对Java的理解和原理的运用,同时又可以完整的了解Java的整个体系。

对于Java的入门书籍,蔡学镛推荐的是Oreilly的《Exploring Java, 2nd Edition》 或者《Java in a Nutshell,2nd Edition(针对C++背景)》,我并没有看过这两本书。其实我觉得电子工业出版社的《Java 2编程详解》或者《Java 2从入门到精通》就很不错。

在所有的Java书籍当中,其实最最有用的,并不是O'reilly的 Java Serials,真正最最有用处是JDK的Documentation!几乎你想获得的所有的知识在Documentation里面全部都有,其中最主要的部分当然是Java基础类库的API文档,是按照package来组织的,对于每一个class都有详细的解释,它的继承关系,是否实现了某个接口,通常用在哪些场合,还可以查到它所有的public的属性和方法,每个属性的解释,意义,每个方法的用途,调用的参数,参数的意义,返回值的类型,以及方法可能抛出的异常等等。可以这样来说,所有关于Java编程方面的书籍其实都不过是在用比较通俗易懂的语言,和良好的组织方式来介绍Documentation里面的某个package里面包含的一些类的用法而已。所以万变不离其宗,如果你有足够的能力来直接通过Documentation来学习Java的类库,那么基本上就不需要看其他的书籍了。除此之外,Documentation也是编程必备的手册,我的桌面上有三个Documentation的快捷方式,分别是J2SDK1.4.1的Documentation,Servlet2.3的Documentation和J2SDKEE1.3.1的Documentation。有了这个三个Documentation,什么其他的书籍都不需要了。

对于Java Web 编程来说,最核心的是要熟悉和掌握HTTP协议,这个就和Java无关了,在熟悉HTTP协议之后,就需要熟悉Java的实现HTTP协议的类库,也就是Servlet API,所以最重要的东西就是Servlet API。当然对于初学者而言,直接通过Servlet API来学习Web编程有很大的难度,我推荐O'reilly的《Java Server Pages 》这本书来学习Web 编程。

EJB的书籍当中,《Enterprise JavaBeans, 2nd Edition》是一本很不错的书, EJB的学习门槛是比较高,入门很难,但是这本书完全降低了学习的难度,特别重要的一点是,EJB的学习需要结合一种App Server的具体实现,所以在学习EJB的同时,必须同步的学习某种App Server,而这本书相关的出了三本书,分别是Weblogic6.1,Websphere4.0和JBoss3.0上面部署书中例子的实做。真是既有理论,又有实践。在学习EJB的同时,可以边看边做,EJB的学习会变得很轻松。

但是这本书也有一个问题,就是版本比较旧,主要讲EJB1.1规范和部分EJB2.0的规范。而Ed Roman写的《Mastering EJB 2.0》这本书完全是根据EJB2.0规范写的,深入浅出,覆盖了EJB编程的各个方面,并且还有很多编程经验tips,也是学习EJB非常推荐的书籍之一。

如果是结合Weblogic来学习J2EE的话,《J2EE应用与BEA Weblogic Server》绝对是首选读物,虽然是讲述的Weblogic6.0,仍然值得购买,这本书是BEA官方推荐的教材,作者也是BEA公司的工程师。现在中文版已经随处可见了。这本书结合Weblogic介绍了J2EE各个方面的技术在Weblogic平台上的开发和部署,实践指导意义非常强。

在掌握了Java平台基础知识和J2EE方面的知识以后,更进一步的是学习如何运用OO的方法进行软件的设计,那么就一定要学习“设计模式”。Sun公司出版了一本《J2EE核心模式》,是每个开发Java企业平台软件的架构师必备的书籍。这本书全面的介绍了J2EE体系架构的各种设计模式,是设计师的必读书籍。

Java Learning Path(三)过程篇

每个人的学习方法是不同的,一个人的方法不见得适合另一个人,我只能是谈自己的学习方法。因为我学习Java是完全自学的,从来没有问过别人,所以学习的过程基本上完全是自己摸索出来的。我也不知道这种方法是否是比较好的方法,只能给大家提供一点参考了。

学习Java的第一步是安装好JDK,写一个Hello World, 其实JDK的学习没有那么简单,关于JDK有两个问题是很容易一直困扰Java程序员的地方:一个是CLASSPATH的问题,其实从原理上来说,是要搞清楚JRE的ClassLoader是如何加载Class的;另一个问题是package和import问题,如何来寻找类的路径问题。把这两个问题摸索清楚了,就扫除了学习Java和使用JDK的最大障碍。推荐看一下王森的《Java深度历险》,对这两个问题进行了深入的探讨。

第二步是学习Java的语法。Java的语法是类C++的,基本上主流的编程语言不是类C,就是类C++的,没有什么新东西,所以语法的学习,大概就是半天的时间足够了。唯一需要注意的是有几个不容易搞清楚的关键字的用法,public,protected,private,static,什么时候用,为什么要用,怎么用,这可能需要有人来指点一下,我当初是完全自己琢磨出来的,花了很久的时间。不过后来我看到《Thinking in Java》这本书上面是讲了这些概念的。

第三步是学习Java的面向对象的编程语言的特性的地方。比如继承,构造器,抽象类,接口,方法的多态,重载,覆盖,Java的异常处理机制。对于一个没有面向对象语言背景的人来说,我觉得这个过程需要花很长很长时间,因为学习Java之前没有C++的经验,只有C的经验,我是大概花了一个月左右吧,才彻底把这些概念都搞清楚,把书上面的例子反复的揣摩,修改,尝试,把那几章内容反复的看过来,看过去,看了不下5遍,才彻底领悟了。不过我想如果有C++经验的话,应该一两天时间足够了。那么在这个过程中,可以多看看《Thinking in Java》这本书,对面向对象的讲解非常透彻。可惜的是我学习的时候,并没有看到这本书,所以自己花了大量的时间,通过自己的尝试和揣摩来学会的。

第四步就是开始熟悉Java的类库。Java的基础类库其实就是JDK安装目录下面jre\lib\rt.jar这个包。学习基础类库就是学习rt.jar。基础类库里面的类非常非常多。据说有3000多个,我没有统计过。但是真正对于我们来说最核心的只有4个,分别是

java.lang.*

java.io.*

java.util.*

java.sql.*

这四个包的学习,每个包的学习都可以写成一本厚厚的教材,而O'reilly也确实是这样做的。我觉得如果时间比较紧,是不可能通过读四本书来学习。我觉得比较好的学习方法是这样的:

首先要通读整个package的框架,了解整个package的class,interface,exception的构成,最好是能够找到介绍整个包框架的文章。这些专门介绍包的书籍的前几章应该就是这些总体的框架内容介绍。

对包整体框架的把握并不是要熟悉每个类的用法,记住它有哪些属性,方法。想记也记不住的。而是要知道包有哪些方面的类构成的,这些类的用途是什么,最核心的几个类分别是完成什么功能的。我在给人培训的时候一般是一次课讲一个包,所以不可能详细的介绍每个类的用法,但是我反复强调,我给你们讲这些包的不是要告诉你们类的方法是怎么调用的,也不要求你们记住类的方法调用,而是要你们了解,Java给我们提供了哪些类,每个类是用在什么场合,当我遇到问题的时候,我知道哪个类,或者哪几个类的组合可以解决我的问题,That'all!,当我们具体写程序的时候,只要你知道该用哪个类来完成你的工作就足够了。编码的时候,具体的方法调用,是边写代码,边查Documentation,所有的东西都在Documentation里面,不要求你一定记住,实际你也记不住3000多个类的总共将近10万个方法调用。所以对每个包的总体框架的把握就变得极为重要。

第五步,通过上面的学习,如果学的比较扎实的话,就打好了Java的基础了,剩下要做的工作是扫清Documentation里面除了上面4个包之外的其他一些比较有用处的类。相信进展到这一步,Java的自学能力已经被培养出来了,可以到了直接学习Documentation的水平了。除了要做GUI编程之外,JDK里面其他会有用处的包是这些:

java.text.*

java.net.*

javax.naming.*

这些包里面真正用的比较多的类其实很少,只有几个,所以不需要花很多时间。

第六步,Java Web 编程

Web编程的核心是HTTP协议,HTTP协议和Java无关,如果不熟悉HTTP协议的话,虽然也可以学好Servlet/JSP编程,但是达不到举一反三,一通百通的境界。所以HTTP协议的学习是必备的。如果熟悉了HTTP协议的话,又有了Java编程的良好的基础,学习Servlet/JSP简直易如反掌,我学习Servlet/JSP就用了不到一周的时间,然后就开始用JSP来做项目了。

在Servlet/JSP的学习中,重头仍然是Servlet Documentation。Servlet API最常用的类很少,花比较少的时间就可以掌握了。把这些类都看一遍,多写几个例子试试。Servlet/JSP编程本质就是在反复调用这些类来通过HTTP协议在Web Server和Brower之间交谈。另外对JSP,还需要熟悉几个常用JSP的标记,具体的写法记不住的话,临时查就是了。

此外Java Web编程学习的重点要放在Web Application的设计模式上,如何进行业务逻辑的分析,并且进行合理的设计,按照MVC设计模式的要求,运用Servlet和JSP分别完成不同的逻辑层,掌握如何在Servlet和JSP之间进行流程的控制和数据的共享,以及Web Application应该如何配置和部署。

第七步,J2EE编程

以上的学习过程如果是比较顺利的话,进行到这一步,难度又陡然提高。因为上面的知识内容都是只涉及一个方面,而像EJB,JMS,JTA等核心的J2EE规范往往是几种Java技术的综合运用的结晶,所以掌握起来难度比较大。

首先一定要学习好JNDI,JNDI是App Server定位服务器资源(EJB组件,Datasouce,JMS)查找方法,如果对JNDI不熟悉的话,EJB,JMS这些东西几乎学不下去。JNDI其实就是javax.naming.*这个包,运用起来很简单。难点在于服务器资源文件的配置。对于服务器资源文件的配置,就需要看看专门的文档规范了,比如web.xml的写法,ejb-jar.xml的写法等等。针对每种不同的App Server,还有自己的服务资源配置文件,也是需要熟悉的。

然后可以学习JTA,主要是要理解JTA对于事务的控制的方法,以及该在什么场合使用JTA。这里可以简单的举个例子,我们知道一般情况可以对于一个数据库连接进行事务控制(conn.setAutoCommit(false),....,conn.commit()),做为一个原子操作,但是假设我的业务需求是要把对两个不同数据库的操作做为一个原子操作,你能做的到吗?这时候只能用JTA了。假设操作过程是先往A数据库插一条记录,然后删除B数据库另一个记录,我们自己写代码是控制不了把整个操作做为一个原子操作的。用JTA的话,由App Server来完成控制。

在学习EJB之前要学习对象序列化和RMI,RMI是EJB的基础。接着学习JMS和EJB,对于EJB来说,最关键是要理解EJB是如何通过RMI来实现对远端对象的调用的,以及在什么情况下要用到EJB。

在学习完EJB,JMS这些东西之后,你可能会意识到要急不可待学习两个领域的知识,一个是UML,另一个是Design Pattern。Java企业软件的设计非常重视框架(Framework)的设计,一个好的软件框架是软件开发成功的必要条件。在这个时候,应该开始把学习的重点放在设计模式和框架的学习上,通过学习和实际的编程经验来掌握EJB的设计模式和J2EE的核心模式。

J2EE规范里面,除了EJB,JMS,JTA,Servlet/JSP,JDBC之外还有很多很多的企业技术,这里不一一进行介绍了。

另外还有一个最新领域Web Services。Web Services也完全没有任何新东西,它像是一种黏合剂,可以把不同的服务统一起来提供一个统一的调用接口,作为使用者来说,我只要获得服务提供者给我的WSDL(对服务的描述),就够了,我完全不知道服务器提供者提供的服务究竟是EJB组件,还是.Net组件,还是什么CORBA组件,还是其他的什么实现,我也不需要知道。Web Services最伟大的地方就在于通过统一的服务提供方式和调用方式,实现了整个Internet服务的共享,是一个非常令人激动的技术领域。Web Services好像目前还没有什么很好的书籍,但是可以通过在网络上面查资料的方式来学习。

Java Learning Path(四) 方法篇

Java作为一门编程语言,最好的学习方法就是写代码。当你学习一个类以后,你就可以自己写个简单的例子程序来运行一下,看看有什么结果,然后再多调用几个类的方法,看看运行结果,这样非常直观的把类给学会了,而且记忆非常深刻。然后不应该满足把代码调通,你应该想想看如果我不这样写,换个方式,再试试行不行。记得哪个高人说过学习编程就是个破坏的过程,把书上的例子,自己学习Documentation编写的例子在运行通过以后,不断的尝试着用不同的方法实现,不断的尝试破坏代码的结构,看看它会有什么结果。通过这样的方式,你会很彻底的很精通的掌握Java。

举个例子,我们都编过Hello World

public class HelloWorld {

public static void main(String[] args) {

System.out.println("Hello World")

}

}

很多初学者不是很理解为什么main方法一定要这样来定义public static void main(String[] args),能不能不这样写?包括我刚学习Java的时候也有这样的疑问。想知道答案吗?很简单,你把main改个名字运行一下,看看报什么错误,然后根据出错信息进行分析;把main的public取掉,在试试看,报什么错误;static去掉还能不能运行;不知道main方法是否一定要传一个String[]数组的,把String[]改掉,改成int[],或者String试试看;不知道是否必须写args参数名称的,也可以把args改成别的名字,看看运行结果如何。

我当初学习Java的时候就是这样做的,把Hello World程序反复改了七八次,不断运行,分析运行结果,最后就彻底明白为什么了main方法是这样定义的了。

此外,我对于staic,public,private,Exception,try{ }catch {}finally{}等等等等一开始都不是很懂,都是把参考书上面的例子运行成功,然后就开始破坏它,不断的根据自己心里面的疑问来重新改写程序,看看能不能运行,运行出来是个什么样子,是否可以得到预期的结果。这样虽然比较费时间,不过一个例子程序这样反复破坏几次之后。我就对这个相关的知识彻底学通了。有时候甚至故意写一些错误的代码来运行,看看能否得到预期的运行错误。这样对于编程的掌握是及其深刻的。

其中特别值得一提的是JDK有一个非常棒的调试功能,-verbose

java –verbose

javac –verbose 以及其它很多JDK工具都有这个选项

-verbose 可以显示在命令执行的过程中,JVM都依次加载哪里Class,通过这些宝贵的调试信息,可以帮助我们分析出JVM在执行的过程中都干了些什么。

另外,自己在学习过程中,写的很多的这种破坏例程,应该有意识的分门别类的保存下来,在工作中积累的典型例程也应该定期整理,日积月累,自己就有了一个代码库了。遇到类似的问题,到代码库里面 Copy &Paste ,Search &Replace,就好了,极大提高了开发速度。最理想的情况是把一些通用的例程自己再抽象一层,形成一个通用的类库,封装好。那么可复用性就更强了。

所以我觉得其实不是特别需要例程的,自己写的破坏例程就是最好的例子,如果你实在对自己写的代码不放心的话,我强烈推荐你看看JDK基础类库的Java源代码。在JDK安装目录下面会有一个src.zip,解开来就可以完整的看到整个JDK基础类库,也就是rt.jar的Java源代码,你可以参考一下Sun是怎么写Java程序的,规范是什么样子的。我自己在学习Java的类库的时候,当有些地方理解的不是很清楚的时候,或者想更加清晰的理解运作的细节的时候,往往会打开相应的类的源代码,通过看源代码,所有的问题都会一扫而空。

Java Learning Path(五)资源篇

1、 http://java.sun.com/ (英文)

Sun的Java网站,是一个应该经常去看的地方。不用多说。

2、http://www-900.ibm.com/developerWorks/cn/

IBM的developerWorks网站,英语好的直接去英文主站点看。这里不但是一个极好的面向对象的分析设计网站,也是Web Services,Java,Linux极好的网站。强烈推荐!!!

3、http://www.javaworld.com/ (英文)

关于Java很多新技术的讨论和新闻。想多了解Java的方方面面的应用,这里比较好。

4、http://dev2dev.bea.com.cn/index.jsp

BEA的开发者园地,BEA作为最重要的App Server厂商,有很多独到的技术,在Weblogic上做开发的朋友不容错过。

5、http://www.huihoo.com/

灰狐动力网站,一个专业的中间件网站,虽然不是专业的Java网站,但是在J2EE企业应用技术方面有深厚的造诣。

6、http://www.theserverside.com/home/ (英文)

TheServerSide是一个著名的专门面向Java Server端应用的网站。

7、http://www.javaresearch.org/

Java研究组织,有很多优秀的Java方面的文章和教程,特别是在JDO方面的文章比较丰富。

8、http://www.cnjsp.org/

JSP技术网站,有相当多的Java方面的文章和资源。

9、http://www.jdon.com/

Jdon论坛,是一个个人性质的中文J2EE专业技术论坛,在众多的Java的中文论坛中,Jdon一个是技术含量非常高,帖子质量非常好的论坛。

10、http://sourceforge.net/

SourgeForge是一个开放源代码软件的大本营,其中也有非常非常丰富的Java的开放源代码的著名的软件。

软件包 java.net 的描述

为实现网络应用程序提供类。

java.net 包可以大致分为两个部分:

低级 API,用于处理以下抽象:

地址,也就是网络标识符,如 IP 地址。

套接字,也就是基本双向数据通信机制。

接口,用于描述网络接口。

高级 API,用于处理以下抽象:

URI,表示统一资源标识符。

URL,表示统一资源定位符。

连接,表示到 URL 所指向资源的连接。

地址

在整个 java.net API 中,地址或者用作主机标识符或者用作套接字端点标识符。

InetAddress 类是表示 IP(Internet 协议)地址的抽象。它拥有两个子类:

用于 IPv4 地址的 Inet4Address。

用于 IPv6 地址的 Inet6Address。

但是,在大多数情况下,不必直接处理子类,因为 InetAddress 抽象应该覆盖大多数必需的功能。

关于 IPv6

并非所有系统都支持 IPv6 协议,而当 Java 网络连接堆栈尝试检测它并在可用时透明地使用它时,还可以利用系统属性禁用它。在 IPv6 不可用或被显式禁用的情况下,Inet6Address 对大多数网络连接操作都不再是有效参数。虽然可以保证在查找主机名时 java.net.InetAddress.getByName 之类的方法不返回 Inet6Address,但仍然可能通过传递字面值来创建此类对象。在此情况下,大多数方法在使用 Inet6Address 调用时都将抛出异常。

套接字

套接字是在网络上建立机器之间的通信链接的方法。java.net 包提供 4 种套接字:

Socket 是 TCP 客户端 API,通常用于连接远程主机。

ServerSocket 是 TCP 服务器 API,通常接受源于客户端套接字的连接。

DatagramSocket 是 UDP 端点 API,用于发送和接收数据包

MulticastSocket 是 DatagramSocket 的子类,在处理多播组时使用。

使用 TCP 套接字的发送和接收操作需要借助 InputStream 和 OutputStream 来完成,这两者是通过 Socket.getInputStream() 和 Socket.getOutputStream() 方法获取的。

接口

NetworkInterface 类提供 API 以浏览和查询本地机器的所有网络接口(例如,以太网连接或 PPP 端点)。只有通过该类才可以检查是否将所有本地接口都配置为支持 IPv6。

高级 API

java.net 包中的许多类可以提供更加高级的抽象,允许方便地访问网络上的资源。这些类为:

URI 是表示在 RFC 2396 中指定的统一资料标识符的类。顾名思义,它只是一个标识符,不直接提供访问资源的方法。

URL 是表示统一资源定位符的类,它既是 URI 的旧式概念又是访问资源的方法。

URLConnection 是根据 URL 创建的,是用于访问 URL 所指向资源的通信链接。此抽象类将大多数工作委托给底层协议处理程序,如 http 或 ftp。

HttpURLConnection 是 URLConnection 的子类,提供一些特定于 HTTP 协议的附加功能。

建议的用法是使用 URI 指定资源,然后在访问资源时将其转换为 URL。从该 URL 可以获取 URLConnection 以进行良好控制,也可以直接获取 InputStream。

下面是一个示例:

URI uri = new URI("http://java.sun.com/")

URL url = uri.toURL()

InputStream in = url.openStream()

协议处理程序

如上所述,URL 和 URLConnection 都依赖于协议处理程序,所以协议处理程序必须存在;否则将抛出异常。此为与 URI 的主要不同点,URI 仅标识资源,所以不必访问协议处理程序。因此,尽管可能利用任何种类的协议方案(例如,myproto://myhost.mydomain/resource/)创建 URI,但类似的 URL 仍将试图实例化指定协议的处理程序;如果指定协议的处理程序不存在,则抛出异常。

默认情况下,协议处理程序从默认位置动态加载。但是,通过设置 java.protocol.handler.pkgs 系统属性也可能增加搜索路径。例如,如果将其设置为 myapp.protocols,则 URL 代码将首先尝试(对于 http 而言)加载 myapp.protocols.http.Handler,然后,如果失败,则尝试从默认位置加载 http.Handler。

注意,处理程序类必须为抽象类 URLStreamHandler 的子类。