精华内容
下载资源
问答
  • 如何学习java

    千次阅读 多人点赞 2019-03-31 08:32:55
    经常看到很多人捧着一本10天精通java,java开发宝典之类的图书学习java,当他们学会了用eclipse、idea等IDE工具写出“Hello World”之后,就感觉自己掌握、甚至精通了java;又或者找来一本类似于jsp动态网站编程之类...

    经常看到很多人捧着一本10天精通java,java开发宝典之类的图书学习java,当他们学会了用eclipse、idea等IDE工具写出“Hello World”之后,就感觉自己掌握、甚至精通了java;又或者找来一本类似于jsp动态网站编程之类的图书,学会使用jsp脚本编写一些页面之后,就自我感觉掌握了java开发!世界上最可怕的事情就是自己菜却不知道自己菜!

    还有一些朋友、求职者听说J2EE、Spring或Spring boot很有“钱途”,于是立即跑到书店或者图书馆找来一本精通j2EE之类的图书,希望这样一本图书就可以打通自己的“任督二脉”,一跃成为J2EE开发高手!

    也有些小盆友非常喜欢J2EE项目实战、项目大全之类的图书,他们想法很单纯:我按照书上介绍,按图索骥、依葫芦画瓢,应该很快就可学会J2EE,很快就能成为一个受人人羡慕的J2EE程序员了!

    ......

    凡此种种,不一而足,他们中的大多数最后的结果都是失败,因为这种学习没有积累、没有根基,学习过程中困难重重,每天都被一些相同、类似的问题所困扰,起初热情十足,经常上论坛,贴吧、QQ群询问,按别人的说法解决问题之后很高兴,既不知道为什么错?也不知道为什么对?只是盲目地抄袭别人的说法。最后的结果有两种:

    1、久而久之,热情丧失,最后放弃学习。

    2、大部分常见问题都问遍了,最后也可以从事一些重复性的开发工作,但一遇到新问题,又将束手无策。

    第一种我就不想多说了,每个人都有自己的选择,他们应该去干他们更擅长的事情,毕竟不管你做什么都能给国家做贡献!对于这第二种情况我可以说在普通程序员中占了极大的比例,笔者多次听到、看到(在网络上)有些程序员抱怨:我做了2年多java程序员了,工资还是5000多点。偶尔笔者也会与他们聊聊工作相关内容,他们会告诉笔者:我也用Spring了啊,我也用Spring boot了

    啊......他们感到非常不平衡,为什么我的工资这么低?其实笔者很想告诉他们:你们太浮躁了!你们确实是用了Spring、Mybatis又或是Spring boot,但你们想过为什么要用这些技术吗?用这些技术有什么好处吗?如果不用这些技术行不行?

    很多时候,我们的程序员把java当成一种脚本,而不是一门面向对象的语言。他们习惯了在JSP脚本中使用Java,但从不去想JSP如何运行,Web服务器里的网络通信、多线程机制,为何一个JSP页面能同时向多个请求者提供服务?更不会想如何开发Web服务器;他们像代码机器一样编写Spring Bean代码,但却从来不去理解Spring容器的作用,更不会想如何开发Spring容器。

    有时候,很多同学在编写五子棋,聊天程序遇到困难的时候,会向他们的大学学长,朋友求救,这些程序员告诉他们:不用写了,网上直接有下载!听到这种回答,我只想对这位学长说:你过来,我保证不会打死你。。。,网上还有Windows下载呢!网上下载和自己编写是两码事。偶尔,笔者会怀恋以前黑色屏幕、绿莹莹字符时代,那时候程序员很单纯:当他们想偷懒时,习惯思维是写一个小工具;现在的程序员很聪明:当他们想偷懒时,习惯是从网上下一个小工具。但是,谁更幸福呢?

    当很多同学把他们完成的小作业放在互联网之后,然后就有很多人称他们为“高手”!这个称呼让他们万分惭愧;惭愧至于,他们也感到万分欣喜,非常有成就感,这就是编程的快乐。编程的过程,与寻宝的过程完全一样:历经千辛万苦,终于找到心中的梦想,这是何等的快乐!

    如果真的打算将编程当成职业,那就不应该如此浮躁,而是应该扎扎实实先学好java语言,然后按java本身的学习规律,踏踏实实一步一个脚印地学习,把基本功练扎实了才可获得更大的成功。

    实际情况是,有多少程序员真正掌握了java 的面向对象?真正掌握了java的多线程、网络通信、反射内容?有多少java程序员真正理解了类初始化时内存运行过程?又有多少程序员理解java对象从创建到消失的全部细节?有几个程序员真正独立地编写过五子棋、坦克大战、聊天程序这种小游戏?又有几个java程序员敢说:我可以开发Spring?我可以开发Tomcat?很多人又会说:这些都是很多人一起开发出来的!实际情况是:很多开源框架的核心最初完全是由一个人开发的。现在这些优秀程序员已经出来了!你,是否深入研究过它们,是否深入掌握了它们?

    如果要真正掌握java,包括后期的javaEE相关技术(例如Spring、Hibernate、Mybatis、Spring boot等),一定要记住笔者的话:绝不要从IDE(如Eclipse和Idea)工具开始学习!IDE工具的功能很强大,初学者学起来也很容易上手,但也非常危险:因为IDE工具已经为我们做了很多事情,而软件开发者应该了解软件开发的全部步骤。

    最后推荐一个笔者在学习java过程中对我帮助非常大的网站,相信你会爱上它!

    how2j实例驱动java全栈学习 

    展开全文
  • 如何学习Java

    2007-07-31 10:31:00
    如何学习Java关键词: java 学习 基础 进阶 最近论坛上看到好几个朋友都在问,如何学习 Java的问题,“我已经学习了J2SE,怎么样才能转向J2EE?”,“我看完了Thinking in

    如何学习Java

    关键词java 学习 基础 进阶

    最近论坛上看到好几个朋友都在问,如何学习 Java的问题,“我已经学习了J2SE,怎么样才能转向J2EE?”,“我看完了Thinking in Java 可以学习J2EE了么?”。于是就有了写这篇文章的想法,希望能帮助初学者少走一些弯路。也算是对自己几年来学习Java的一个总结吧。

    在开始之前有必要再讨论一下J2MEJ2SEJ2EE这些概念。J2METhe Micro Edition of the Java 2 Platform。主要用于嵌入式Java,如手机,PDA等等。J2SEJava 2 PlatformStandard Edition,我们通常所说的JDK(Java Development Kit)包含在此,是J2EE的基础。J2EEJava 2 PlatformEnterprise Edition,就是所谓的企业级Java。这些只是从API级别上的划分,实际上SunJ2EE的定义是:开发基于组件的多层的企业级应用的规范。也就是为各种不同的技术定义一个Java的规范,使这些不同的技术结合起来,在Java平台上构建强壮的企业级应用。从这一点来看,J2EE这个概念应该是涵盖J2MEJ2SE的。比如一个典型的J2EE应用,网上商店,它支持web方式下订单,也支持手机下订单。显然必须用到J2SEJ2ME。所以也就不存在所谓的从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 PageJava ServletEnterprise JavaBeanJDBCTransactions。还有JAXPXML相关技术,Java Message ServiceJava MailJDO等等是最好应该掌握的。其他Management TechnologiesConnector Architecture等等主要是给容器提供商中间件提供商参考的,应用开发者不需要怎么关心,等用到了再去学习也不迟。

    语言学习篇

    首先是J2SE基础。学习一门新技术,无外乎阅读和实践了。而一本好的参考书对于初学者来说显得格外重要。现在市面上的 Java书籍可以说是铺天盖地,质量也是良莠不齐,令初学者无所适从。所以还是先推荐几本书籍吧。目前对于Java基础知识,大家一般都比较推荐两本书><>> Core Java 2 Volume I: Fundamentals <<第一本书不必多说了,Bruce Eckel的大作,Jolt获奖书籍。内容比较全面,基本涵盖了java语言的方方面面。这本书提供了相当丰富的例子,非常有利于对学习内容的了解。另外书中第一部分对于OO基本书籍的介绍,我觉得对于刚接触OO的人来说帮助会很大。而且此书是Open Source的,可以从作者网上下载http://www.mindview.net/Books/TIJ/而对于习惯于读中文版的学习者来说,侯捷翻译的中文版是不错的选择。要说这本说的缺点可能就是对于初学者来说厚了一点,这也是一些人并不推荐此书作为初学者学习用书的原因吧。后面一本>> Core Java 2 Volume I: Fundamentals <<目前已经是第七版了,单从它出版的次数来看也可以看出此书受欢迎的程度,这本书特点也是讲述比较全面系统,基本上一路啃下来的话Java语言基础应该算过关了。缺点也是太厚了,有点像参考手册,前面部分花了不少篇幅讲SwingApplet,可能对初学者不是很有用。还有一些像>> Java in a nutshell<<也是比较不错的基础书籍。

    学习了基本的语言基础,别忘了最重要也是最有用的资料还是JDK文档。从你学习java的第一天开始JDK文档应该是常备手头了。如果你碰到问题首先想到的是到论坛上去提问而不是查阅Jdk文档,那先别继续往下学习了,学会查JDK文档先。不夸张的说在我们的初学者论坛中60%的问题是光查一下JDK文档就能解决问题的。最新JDK Documentation下载地址http://java.sun.com/j2se/1.4.2/download.html(目前最新版是J2SE5 http://java.sun.com/j2se/1.5.0/download.jsp)不能光说不练,同一下载页面把JDK给下载回来。安装完后有一点我想提一下,安装路径下有一个src.zip(有些jdk版本是src.jar),好东西啊---JDK源代码,老是有人在论坛上问哪里有JDK源代码下载,你说东西就放在你家里还到处找。有了这个有些问题就需要在论坛上跟人家争来争去了,翻开源代码瞧一下什么疑问都没有了。几个最重要的命令行工具是

    javac: 编译源文件到class文件

    java: 运行class

    jar: 打包工具。

    javadoc: 生成java doc的工具。

    对于初学java的人来说,我不推荐使用IDE而直接用文本编辑器,然后用命令行编译运行。这样有利于理解CLASSPATHPATH这些最基本概念。CLASSPATH是初学者比较容易感觉迷惑的地方。现在的IDE太聪明了,给个名字就给你自动生成java source code,自动编译。可能你运行完了你的第一个Hello World程序,还不知道javajavac是用来做什么的。至于实际的项目开发,一款合适的IDE还是十分重要的,我们稍后再对java开发工具做一些介绍。

    J2EE基础和Java语言进阶

    学习完语言基础,就可以比较自然地转入J2EE实际技术的学习了。J2EE实在是比较庞杂,而EJBServlet,这些核心技术是作为每一个J2EE开发人员所需要掌握的。关于servlet,我比较推荐><><第一本是Sun推荐的Servlet教材。第二本是当年Amazon最畅销Java书籍,五星级书籍。这本书机械工业出版社有中文版叫>>JSP权威指南<<,感觉翻译得还可以,第二版好像还没有看到有中文版。两本书都全面系统地介绍了JSPSevlet知识,从web服务器配置,JSPServlet基本编程,标记库(Tag Lib),过滤器,事件框架都有很好地描述。提供地例子也比较实用。对于EJB学习,比较著名有两本书,>> Enterprise JavaBeans 3nd Edition<<>> Mastering Enterprise Java Beans Third Edition<<,两位作者Richard MonsonEd Roman都是属于业界重量级人物。而Richard Monson本身就是EJB规范专家组成员。对我来说,两本书难分优劣,第二本书有个好处就是可以免费下载http://www.theserverside.com/books/wiley/masteringEJB/index.tss

    还是那句话,不能光说不练,不过J2EE的练习做起来有一点麻烦,应用服务器是不可少的,最好还得准备个轻量级的数据库。下面简单介绍一下这些工具。

    web服务器(Servlet Container)方面有。

    Tomcat: http://jakarta.apache.org/tomcat/

    Jetty: http://jetty.mortbay.org/jetty/

    应用服务器常用的有,

    Jboss: http://www.jboss.org/products/index

    Weblogic: http://www.bea.com/framework.jsp?CNT=index.htm&FP=/content/products/server

    WebSphere: http://www-128.ibm.com/developerworks/downloads/ws/was/?S_TACT=105AGX28&S_CMP=DLMAIN

    TomcatJettyJboss都是Open SourceWeblogicWebSphereJ2EE服务器中的老大级人物,价格也不菲。不过对于开发者有免费的试用版下载。

    如果单单只是学习Servlet,推荐使用Tomcat,它是Sun官方指定的ServletJSP规范的参考实现。对初学者最重要的是它使用比较简单,自带文档比较齐全,使用者众多,有什么问题容易在论坛上面得到帮助。如果学习EJB的话,推荐使用Jboss,不仅仅是因为它是Open Source的,主要是配置比较简单,使用方便。比如说对于连接数据库,对于常用的MySQLOracleMS SQL等等都提供了Sample Config文件,直接拿过来做些小改动扔到Deploy目录下就可以用DataSource了,部署J2EE应用也简单,把整个.ear或者.war扔到deploy下就可以了。唯一不方便的地方是从Jboss3.0开始,它的文档开始收费了。但是对于一些基本的配置,在网上还是非常容易找到的,毕竟它太流行了。至于Weblogic,也比较容易使用,不过比起Jboss来个头大了很多,通过强大的管理界面使得一些常用的配置工作变得十分简单。和Jboss比起来它的文档就太多了,简直是有点罗里八嗦,比如要部署一个.ear文件,一般我们也就是直接扔到domain下的applications目录下就会自动deploy了,但是要看它的文档可是长篇大论,容易吓着初学者,以为这又是什么高深的学问。至于WebSphere,个人不推荐初学者使用,相比前俩个Server比较难使,而且狂吃内存。不过在企业级市场这个家伙表现不俗,毕竟是出生于IBM这样的豪门。

    数据库方面,目前常见的主要有PostgreSQLMySQLOracleMS SQLDB2等等。前面两个是开源数据库,后面几个基本上垄断着大部分的数据库市场。对于初学者用来做做EJBJDBC的练习,我推荐MySQL,理由还是很简单,开源软件不要钱,个头小使用方面,用户众多文档齐全。下载地址http://www.mysql.com/products/mysql/PostgreSQL也可以考虑,不过国内使用者远不如MySQL多,所以要在论坛上问起问题来就少方便一些了,下载地址http://www.pervasive-postgres.com/downloads/。至于后面那些比较重量级的数据库,为了做做练习而言就不用考虑了, 咱也花不起这个钱啊。

    学习完J2EE的这些具体技术,这个时候进行基本的J2EE开发应该是不成问题了。此时应该考虑提高自己的代码质量了。这里我强烈推荐Martin Fowler><这本书不是一本非常实际的书,作者完全是手把手地教你如何提高代码质量,从具体地代码中告诉你什么是代码的Bad Smell,如何去掉这些Bad Smell。不少书评是这么说的,这本书对于初级,中级的读者帮助是立杆见影的。至少就我接触到的几个学习编程不久的程序员,编码质量在短期内都有很大提高。当然重构(Refactoring)这一概念并不只针对Java语言的,它对所有OO语言都是适用的。重构的概念是如此深入人心,以至于今天几乎所有流行的IDE工具都有对重构的支持。这里我还想再推荐一本><C++过来的程序员都知道><C++领域的地位,至今还流传着这样的趣话,C++程序员分为两种,一种是读过><的,另一种是没有读过C++的。虽然这本><Java领域的影响也许没有那么大,但对于Java程序员绝对有相当的指导价值。作者是Sun公司的Joshua Blochjava Collection framework的设计者。作者站在JDK设计者的角度向你介绍他的Best Practice,应该这样做而不应该那样做,对于JDK中某些API设计的缺陷他也毫不袒护的指出。Java语言之父James Gosling为此书写的前言是这么说的“I sure wish I had had this book ten years ago Some might think that I don't need any Java books but I need this one”。这本书会让你觉得原来你对Java还是有很多东西不了解的。举个例子来说,对象的equals方法,我们认为它很简单,也许你每天都在为你新写的Class重载这个方法,但是你在重载的时候注意过“自反”,“对称”,“传递”这些必须要考虑的因素,你是否同时还小心谨慎的重载了hashcode这个方法?如果没有,建议你要读一下这本书。读完这本书,你会觉得离Java的距离更近了。上面两本书都出过中文版,后面一本><还有两个版本的中文版,第一次翻译的比较差一点,后来机械工业出版社又委托潘爱民/>先生重新翻译了一遍。同一本书在同一个出版社连续被翻译了两次也说明国内出版界对这本书还是比较重视的。

    这个阶段,在看书的同时,可以结合着学习一些优秀的开源项目的源代码。这些开源项目的代码风格,注释都是值得借鉴的。实在太懒也别忘了手头上还有个Jdk的源代码。其实也不用刻意去找源代码,在实际的J2EE项目开发中,基本上都会用到一些优秀的开源项目。Framework可能会用到SpringStrutsLog机制基本上都会JarkartaCommons Log或者Log4j,单元测试会大多会用Junit,结合项目阅读一下其中的一些源代码,既可以提高自己又对项目会有所帮助,说不定因此而得到PM的赏识呢。一举两得,何乐而不为呢。呵呵,有点扯远了。过了初学者阶段,该学会如何找到适合自己的Java书籍了。历经数十载,今天的Java技术已经变的如此之庞杂,我相信即使穷净一个人毕生之精力也不可能把Java所有的相关技术都学通,何况新技术还在层出不穷地推出,3年之前谁会知道Struts会成为Web框架事实上的工业标准。2年之前谁会知道Hibernate会在今天独领风骚。既然已经不能指望一次性把java技术的方方面面都学个通,在实际中也只能是需要什么技术再学习什么技术了。而能否选择一本好的参考书籍带来的就是事半功倍和事倍工半的效果。所以我觉得花点时间放在选择书籍上面还是很值得的,否则你在后面只会花更多的时间。下面我谈谈自己选择书籍的一些经验,不一定正确。首先看作者,像上面提到的那些书的作者,都是业界鼎鼎大名的,选择他们的书一般错不了。大家看的书多了,自己胸中自然也会有一个list,哪些作者是信得过的。二看出版社,计算机书籍方面,OreillyAddison-Wesley都是公认比较好的出版社。对于目前比较流行的Java技术,Oreilly>in Action<<系列是不错的选择。另外我还会去看看Amazon网站(http://www.amazon.com/)的书评,一般小于3星级的书我都不会考虑。还有一个好去处theserversidehttp://www.theserverside.com/的书评,这里的书评比较有趣,往往都有很激烈的争论,里面经常会看到一些名人在发言。我要向所有Java学习者推荐,如果我的收藏夹里面只能存放两个网站,我会选择java.suntheserverside。在这里你可以了解最新的Java动态,可以学习第一手的Java资料,可以看到Java高手们(里面不乏业界大腕)激烈辩论。/>in Action<</>

    到此阶段,Java Developer的基本功底应该算是打好了吧,往后就是不断学习喽。结束这一段之前,最后再介绍一本书Oreilly> Second Edition <<因为我觉得多线程编程属于Java基本功,每一个想学好Java的人都应该好好掌握。

    提高篇

    在这个阶段应该从软件架构,Framework层次上来学习了。作为面向对象的圣经>< 这本书是不得不推荐的。不用再多说了,这本在面向对象领域地位完全是属于教父级别的。不管你学习的是什么OO语言,不管你现在是用.Net还是J2EE开发,这本书都是你进阶之路上的必读之书。而><则专门针对于J2EE来讨论设计模式,书中Sun Java Center的资深设计师描述了J2EE关键技术的模式。最佳实践,设计策略和经过验证的解决方案。对于每一个希望成为J2EE 架构师或者设计师,这本书值得一读。学习设计模式的时候,建议是结合实际的源代码来看,比如看看Junit源代码,你可以看到很多设计模式优雅的实现,作者之一Erich Gamma本身就是><的作者。至于J2EE的设计模式,Sun还开辟了专门的空间http://java.sun.com/blueprints/patterns/,里面有对常用模式的讨论又提供了详细的源代码样例。正如Grady Booch所说,模式对于普遍问题提供了通用的解决方案,利用模式就等于拥有一个强大的专家队伍。如果你还没有学习,现在就开始吧。此外对于面向对象方法论,极限编程的思想也应该有所了解http://www.extremeprogramming.org/。对于J2EE项目的具体实施,Rod Johnson><也很有价值,该书以作者丰富的实战经验向我们展示如何用尽可能简单的解决方案构建J2EE 应用,书中作者第一次提出这样的观点,很多时候,J2EE应用完全没有必要用到EJB,对于言必称EJB的广大J2EE开发者来说,怎么说也有点惊世咳俗的味道。当然,作为ServletJDO两个专家组的成员,这可不是作者信口胡驺的。今天风靡Java世界的Spring框架最初便是源于此书,而IOCAOP等概念更是被时下的java开发者挂在嘴边。最后,作为对Java的深入学习,Java技术的各个Specification也有必要一读。暂时就写到这里吧。

    【作者: Liberal】【访问统计:<script language="JavaScript" src="http://counter.blogchina.com/PageServlet?pageid=5851127&blogid=8561"></script>】【2006年11月11日 星期六 12:13】【注册】【打印

    展开全文
  • 如何学习JAVA

    2011-05-08 21:00:00
    因为以后实验室的项目主要都是用JAVA写的,最近一直在纠结该怎么学习JAVA。看书(Thinking in java)还是看视频?

    因为以后实验室的项目主要都是用JAVA写的,最近一直在纠结该怎么学习JAVA。看书(Thinking in java)还是看视频?

    展开全文
  • 看牛人如何学习JAVA-如何学习java

    千次阅读 2012-01-04 18:54:03
    看牛人如何学习JAVA 如何学习java(一) 最近论坛上看到好几个朋友都在问,如何学习 Java的问题,“我已经学习了J2SE,怎么样才能转向J2EE?”,“我看完了Thinking in Java, 可以学习J2EE了么?”。于是就有了...
    看牛人如何学习JAVA

    如何学习java(一)

    最近论坛上看到好几个朋友都在问,如何学习 Java的问题,“我已经学习了J2SE,怎么样才能转向J2EE?”,“我看完了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等等主要是给容器提供商中间件提供商参考的,应用开发者不需要怎么关心,等用到了再去学习也不迟。

    语言学习篇
    首先是J2SE基础。学习一门新技术,无外乎阅读和实践了。而一本好的参考书对于初学者来说显得格外重要。现在市面上的 Java书籍可以说是铺天盖地,质量也是良莠不齐,令初学者无所适从。所以还是先推荐几本书籍吧。目前对于Java基础知识,大家一般都比较推荐两本书,<<Thinking In Java>>和<< Core Java? 2, Volume I: Fundamentals >>。第一本书不必多说了,Bruce Eckel的大作,Jolt获奖书籍。内容比较全面,基本涵盖了java语言的方方面面。这本书提供了相当丰富的例子,非常有利于对学习内容的了解。另外书中第一部分对于OO基本书籍的介绍,我觉得对于刚接触OO的人来说帮助会很大。而且此书是Open Source的,可以从作者网上下载http://www.mindview.net/Books/TIJ/而对于习惯于读中文版的学习者来说,侯捷翻译的中文版是不错的选择。要说这本说的缺点可能就是对于初学者来说厚了一点,这也是一些人并不推荐此书作为初学者学习用书的原因吧。后面一本<<Core Java? 2, Volume I: Fundamentals>>,目前已经是第七版了,单从它出版的次数来看也可以看出此书受欢迎的程度,这本书特点也是讲述比较全面系统,基本上一路啃下来的话Java语言基础应该算过关了。缺点也是太厚了,有点像参考手册,前面部分花了不少篇幅讲Swing和Applet,可能对初学者不是很有用。还有一些像<< Java in a nutshell>>也是比较不错的基础书籍。
    学习了基本的语言基础,别忘了最重要也是最有用的资料还是JDK文档。从你学习java的第一天开始JDK文档应该是常备手头了。如果你碰到问题首先想到的是到论坛上去提问而不是查阅Jdk文档,那先别继续往下学习了,学会查JDK文档先。不夸张的说在我们的初学者论坛中60%的问题是光查一下JDK文档就能解决问题的。最新JDK Documentation下载地址http://java.sun.com/j2se/1.4.2/download.html(目前最新版是J2SE5 http://java.sun.com/j2se/1.5.0/download.jsp)不能光说不练,同一下载页面把JDK给下载回来。安装完后有一点我想提一下,安装路径下有一个src.zip(有些jdk版本是src.jar),好东西啊---JDK源代码,老是有人在论坛上问哪里有JDK源代码下载,你说东西就放在你家里还到处找。有了这个有些问题就需要在论坛上跟人家争来争去了,翻开源代码瞧一下什么疑问都没有了。几个最重要的命令行工具是
    javac:           编译源文件到class文件
    java:             运行class
    jar:               打包工具。
    javadoc:        生成java doc的工具。
    对于初学java的人来说,我不推荐使用IDE而直接用文本编辑器,然后用命令行编译运行。这样有利于理解CLASSPATH,PATH这些最基本概念。CLASSPATH是初学者比较容易感觉迷惑的地方。现在的IDE太聪明了,给个名字就给你自动生成java source code,自动编译。可能你运行完了你的第一个Hello World程序,还不知道java和javac是用来做什么的。至于实际的项目开发,一款合适的IDE还是十分重要的,我们稍后再对java开发工具做一些介绍。

    如何学习java(二)
    J2EE基础和Java语言进阶
    学习完语言基础,就可以比较自然地转入J2EE实际技术的学习了。J2EE实在是比较庞杂,而EJB,Servlet,这些核心技术是作为每一个J2EE开发人员所需要掌握的。关于servlet,我比较推荐<<Core Servlet and JSP 2Edition>>和<<More Servlets and Java Server Pages>>,第一本是Sun推荐的Servlet教材。第二本是当年Amazon最畅销Java书籍,五星级书籍。这本书机械工业出版社有中文版叫<<Servlet 与JSP权威指南>>,感觉翻译得还可以,第二版好像还没有看到有中文版。两本书都全面系统地介绍了JSP和Sevlet知识,从web服务器配置,JSP,Servlet基本编程,标记库(Tag Lib),过滤器,事件框架都有很好地描述。提供地例子也比较实用。对于EJB学习,比较著名有两本书,<< Enterprise JavaBeans, 3nd Edition>>和<< Mastering Enterprise Java Beans Third Edition>>,两位作者Richard Monson,Ed Roman都是属于业界重量级人物。而Richard Monson本身就是EJB规范专家组成员。对我来说,两本书难分优劣,第二本书有个好处就是可以免费下载http://www.theserverside.com/books/wiley/masteringEJB/index.tss。
    还是那句话,不能光说不练,不过J2EE的练习做起来有一点麻烦,应用服务器是不可少的,最好还得准备个轻量级的数据库。下面简单介绍一下这些工具。
    web服务器(Servlet Container)方面有。
    Tomcat:          http://jakarta.apache.org/tomcat/
    Jetty:              http://jetty.mortbay.org/jetty/
    应用服务器常用的有,
    Jboss:            http://www.jboss.org/products/index
    Weblogic:       http://www.bea.com/framework.jsp?CNT=index.htm&FP=/content/products/server
    WebSphere:    http://www-128.ibm.com/developerworks/downloads/ws/was/?S_TACT=105AGX28&S_CMP=DLMAIN。
    Tomcat,Jetty,Jboss都是Open Source。Weblogic和WebSphere是J2EE服务器中的老大级人物,价格也不菲。不过对于开发者有免费的试用版下载。
    如果单单只是学习Servlet,推荐使用Tomcat,它是Sun官方指定的Servlet,JSP规范的参考实现。对初学者最重要的是它使用比较简单,自带文档比较齐全,使用者众多,有什么问题容易在论坛上面得到帮助。如果学习EJB的话,推荐使用Jboss,不仅仅是因为它是Open Source的,主要是配置比较简单,使用方便。比如说对于连接数据库,对于常用的MySQL,Oracle,MS SQL等等都提供了Sample Config文件,直接拿过来做些小改动扔到Deploy目录下就可以用DataSource了,部署J2EE应用也简单,把整个.ear或者.war扔到deploy下就可以了。唯一不方便的地方是从Jboss3.0开始,它的文档开始收费了。但是对于一些基本的配置,在网上还是非常容易找到的,毕竟它太流行了。至于Weblogic,也比较容易使用,不过比起Jboss来个头大了很多,通过强大的管理界面使得一些常用的配置工作变得十分简单。和Jboss比起来它的文档就太多了,简直是有点罗里八嗦,比如要部署一个.ear文件,一般我们也就是直接扔到domain下的applications目录下就会自动deploy了,但是要看它的文档可是长篇大论,容易吓着初学者,以为这又是什么高深的学问。至于WebSphere,个人不推荐初学者使用,相比前俩个Server比较难使,而且狂吃内存。不过在企业级市场这个家伙表现不俗,毕竟是出生于IBM这样的豪门。
    数据库方面,目前常见的主要有PostgreSQL,MySQL,Oracle,MS SQL,DB2等等。前面两个是开源数据库,后面几个基本上垄断着大部分的数据库市场。对于初学者用来做做EJB,JDBC的练习,我推荐MySQL,理由还是很简单,开源软件不要钱,个头小使用方面,用户众多文档齐全。下载地址http://www.mysql.com/products/mysql/。PostgreSQL也可以考虑,不过国内使用者远不如MySQL多,所以要在论坛上问起问题来就少方便一些了,下载地址http://www.pervasive-postgres.com/downloads/。至于后面那些比较重量级的数据库,为了做做练习而言就不用考虑了, 咱也花不起这个钱啊。
    学习完J2EE的这些具体技术,这个时候进行基本的J2EE开发应该是不成问题了。此时应该考虑提高自己的代码质量了。这里我强烈推荐Martin Fowler的<<Refactoring: Improving the Design of Existing Code >>,这本书不是一本非常实际的书,作者完全是手把手地教你如何提高代码质量,从具体地代码中告诉你什么是代码的Bad Smell,如何去掉这些Bad Smell。不少书评是这么说的,这本书对于初级,中级的读者帮助是立杆见影的。至少就我接触到的几个学习编程不久的程序员,编码质量在短期内都有很大提高。当然重构(Refactoring)这一概念并不只针对Java语言的,它对所有OO语言都是适用的。重构的概念是如此深入人心,以至于今天几乎所有流行的IDE工具都有对重构的支持。这里我还想再推荐一本<<Effective Java>>。从C++过来的程序员都知道<<Effective C++>>在C++领域的地位,至今还流传着这样的趣话,C++程序员分为两种,一种是读过<<Effective C++>>的,另一种是没有读过C++的。虽然这本<<Effective Java>>在Java领域的影响也许没有那么大,但对于Java程序员绝对有相当的指导价值。作者是Sun公司的Joshua Bloch,java Collection framework的设计者。作者站在JDK设计者的角度向你介绍他的Best Practice,应该这样做而不应该那样做,对于JDK中某些API设计的缺陷他也毫不袒护的指出。Java语言之父James Gosling为此书写的前言是这么说的“I sure wish I had had this book ten years ago。 Some might think that I don't need any Java books, but I need this one”。这本书会让你觉得原来你对Java还是有很多东西不了解的。举个例子来说,对象的equals方法,我们认为它很简单,也许你每天都在为你新写的Class重载这个方法,但是你在重载的时候注意过“自反”,“对称”,“传递”这些必须要考虑的因素,你是否同时还小心谨慎的重载了hashcode这个方法?如果没有,建议你要读一下这本书。读完这本书,你会觉得离Java的距离更近了。上面两本书都出过中文版,后面一本<<Effective Java>>还有两个版本的中文版,第一次翻译的比较差一点,后来机械工业出版社又委托潘爱民先生重新翻译了一遍。同一本书在同一个出版社连续被翻译了两次也说明国内出版界对这本书还是比较重视的。
    这个阶段,在看书的同时,可以结合着学习一些优秀的开源项目的源代码。这些开源项目的代码风格,注释都是值得借鉴的。实在太懒也别忘了手头上还有个Jdk的源代码。其实也不用刻意去找源代码,在实际的J2EE项目开发中,基本上都会用到一些优秀的开源项目。Framework可能会用到Spring,Struts,Log机制基本上都会JarkartaCommons Log或者Log4j,单元测试会大多会用Junit,结合项目阅读一下其中的一些源代码,既可以提高自己又对项目会有所帮助,说不定因此而得到PM的赏识呢。一举两得,何乐而不为呢。呵呵,有点扯远了。过了初学者阶段,该学会如何找到适合自己的Java书籍了。历经数十载,今天的Java技术已经变的如此之庞杂,我相信即使穷净一个人毕生之精力也不可能把Java所有的相关技术都学通,何况新技术还在层出不穷地推出,3年之前谁会知道Struts会成为Web框架事实上的工业标准。2年之前谁会知道Hibernate会在今天独领风骚。既然已经不能指望一次性把java技术的方方面面都学个通,在实际中也只能是需要什么技术再学习什么技术了。而能否选择一本好的参考书籍带来的就是事半功倍和事倍工半的效果。所以我觉得花点时间放在选择书籍上面还是很值得的,否则你在后面只会花更多的时间。下面我谈谈自己选择书籍的一些经验,不一定正确。首先看作者,像上面提到的那些书的作者,都是业界鼎鼎大名的,选择他们的书一般错不了。大家看的书多了,自己胸中自然也会有一个list,哪些作者是信得过的。二看出版社,计算机书籍方面,Oreilly,Addison-Wesley都是公认比较好的出版社。对于目前比较流行的Java技术,Oreilly的<<XXXX in Action>>系列是不错的选择。另外我还会去看看Amazon网站(http://www.amazon.com/)的书评,一般小于3星级的书我都不会考虑。还有一个好去处theserverside,http://www.theserverside.com/的书评,这里的书评比较有趣,往往都有很激烈的争论,里面经常会看到一些名人在发言。我要向所有Java学习者推荐,如果我的收藏夹里面只能存放两个网站,我会选择java.sun和theserverside。在这里你可以了解最新的Java动态,可以学习第一手的Java资料,可以看到Java高手们(里面不乏业界大腕)激烈辩论。
    到此阶段,Java Developer的基本功底应该算是打好了吧,往后就是不断学习喽。结束这一段之前,最后再介绍一本书Oreilly的<<Java Threads, Second Edition >>,因为我觉得多线程编程属于Java基本功,每一个想学好Java的人都应该好好掌握。

    提高篇
    在这个阶段应该从软件架构,Framework层次上来学习了。作为面向对象的圣经<<Design Patterns>>, 这本书是不得不推荐的。不用再多说了,这本在面向对象领域地位完全是属于教父级别的。不管你学习的是什么OO语言,不管你现在是用.Net还是J2EE开发,这本书都是你进阶之路上的必读之书。而<<Core J2EE Patterns>>则专门针对于J2EE来讨论设计模式,书中Sun Java Center的资深设计师描述了J2EE关键技术的模式。最佳实践,设计策略和经过验证的解决方案。对于每一个希望成为J2EE 架构师或者设计师,这本书值得一读。学习设计模式的时候,建议是结合实际的源代码来看,比如看看Junit源代码,你可以看到很多设计模式优雅的实现,作者之一Erich Gamma本身就是<<Design Patterns>>的作者。至于J2EE的设计模式,Sun还开辟了专门的空间http://java.sun.com/blueprints/patterns/,里面有对常用模式的讨论又提供了详细的源代码样例。正如Grady Booch所说,模式对于普遍问题提供了通用的解决方案,利用模式就等于拥有一个强大的专家队伍。如果你还没有学习,现在就开始吧。此外对于面向对象方法论,极限编程的思想也应该有所了解http://www.extremeprogramming.org/。对于J2EE项目的具体实施,Rod Johnson的<<Expert One-on-One J2EE Design and Development (Programmer to Programmer)>>也很有价值,该书以作者丰富的实战经验向我们展示如何用尽可能简单的解决方案构建J2EE 应用,书中作者第一次提出这样的观点,很多时候,J2EE应用完全没有必要用到EJB,对于言必称EJB的广大J2EE开发者来说,怎么说也有点惊世咳俗的味道。当然,作为Servlet和JDO两个专家组的成员,这可不是作者信口胡驺的。今天风靡Java世界的Spring框架最初便是源于此书,而IOC,AOP等概念更是被时下的java开发者挂在嘴边。最后,作为对Java的深入学习,Java技术的各个Specification也有必要一读。暂时就写到这里吧。  
    展开全文
  • 新手如何学习Java

    千次阅读 2019-01-19 17:18:40
    前一阵子,我经常闲逛于各种技术论坛和知乎,看到很多类似于“新手如何学习Java”的问题,想到题主们虽有上进之心,奈何入门不得法的窘态,我心急如焚。虽然有很多老鸟或者小牛们已经回答了这些问题,但是大部分回答...
  • 新手如何学习Java以及学习java的步骤 第一步 首先要做好学习前的准备工作:java语言一般用于大型的服务器程序开发,所有有必要了解如下内容:Unix开发环境Unix系统原理、Unix开发环境、Unix常用命令。熟练掌握Unix...
  • Java初学者,如何学习Java?新手不知道如何入门。请大神们指教,谢谢。
  • 如何学习java ee

    2016-11-16 16:00:32
    1、如何学习java ee? java ee是一个开放的框架,包含十三种技术规范。java ee完全可以代表java技术的最高水平,java ee需要你有java se的基础。 2、java学习流程: 第一阶段:【单机版编程】 计算机基础(了解它...
  • 如何学习Java?谈Java学习之路

    千次阅读 2013-04-02 00:29:09
    Java光学习书籍就数不胜数,初学者对于如何学习Java往往一头雾水。本文分析了从入门开始的一个比较符合常理的学习步骤,希望对于Java学习者们有些帮助。 51CTO编者注:这篇文章已经是有数年“网龄”的老文,不过...
  • 如何学习Java Web开发

    2016-12-28 00:35:36
    如何学习Java Web开发 一、学习DreamWaveMX中文版的网页设计技术  HTML网页设计,这是最基本的。学习XML的一些基本知识。初步掌握一些JSCRIPT的应用。 二、学习JAVA语言。  这...
  • Java:计算机编程语言Java的简介、编程环境/工具、如何学习Java之详细攻略 目录 Java的简介 1、Java的工作原理——基于Eclipse等编程Java语言→定义Java类→Java虚拟机运行→Java API调用 2、Java的...
  • java学习之道 --- 如何学习java

    万次阅读 多人点赞 2017-04-02 00:27:58
    最近一直在重新学习java的基础,也写了一系列的博客(重新认识java系列)。很荣幸得到了许多同学的反馈。其中有许多人是初学者,来问我一些问题,也有一些是已经有过一定的基础,看了我的博客,也有了一些新的认知,...
  • 牛人如何学习JAVA

    千次阅读 2010-07-07 16:36:00
    电脑里面 存了好久了,舍不得删,存到这里吧 如何学习java(一)最近论坛上看到好几个朋友都在问,如何学习 Java的问题,“我已经学习了J2SE,怎么样才能转向J2EE?”,“我看完了Thinking in Java, 可以学习J2EE了么?...
  • 如何学习java,这是一个很尴尬的话题,因为但凡对IT行业了解一点的,都听过很多书,比如《java从入门到放弃》《从删库到跑路》,当然这只是段子,转行学习java首先你要知道自己到底适不适合这个枯燥无聊吹逼伪高薪的行业....
  • 新手如何学习Java——Java学习路线图

    千次阅读 2017-10-08 19:37:46
    怎么学习Java,这是很多新手经常会问我的问题,现在我简单描述下一个Java初学者到就业要学到的一些东西:首先要明白Java体系设计到得三个方面:J2SE,J2EE,J2ME(KJAVA)。J2SE,Java 2 Platform Standard Edition,...
  • 新人如何学习JAVA

    千次阅读 2007-02-28 12:28:00
    最近论坛上看到好几个朋友都在问,如何学习 Java的问题,“我已经学习了J2SE,怎么样才能转向J2EE?”,“我看完了Thinking in Java, 可以学习J2EE了么?”。于是就有了写这篇文章的想法,希望能帮助初学者少走一些...
  • 如何学习Java多线程

    千次阅读 2018-04-09 08:22:26
    最近一段时间,我对《Java并发编程实践》这本经典而又有些难懂的书籍,尝试用了一些简单有趣、通俗易懂的方式进行解读,现整理成GitBook(文末有链接),方便大家阅读。
  • JAVA的“水”还是比较深的,要想...这些懂了还不够,我们得通过做项目来学习一些高级的知识才能算是JAVA的合格学习者。配一张学习流程图: 什么是JDK?什么又是JRE?区别? JDK:Java编程语言,Java API类库和Ja...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,433
精华内容 15,773
关键字:

如何学习java

java 订阅