- 在线时间
- 0 小时
- 最后登录
- 2007-11-12
- 注册时间
- 2004-12-24
- 听众数
- 2
- 收听数
- 0
- 能力
- 0 分
- 体力
- 2467 点
- 威望
- 0 点
- 阅读权限
- 50
- 积分
- 882
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 205
- 主题
- 206
- 精华
- 2
- 分享
- 0
- 好友
- 0
升级   70.5% 该用户从未签到
 |
本文选自:开放系统世界——赛迪网 2002年12月18日 / q' W% W$ m; p+ G% G) P K
Java总有它的千般好处使你选择它,但这些随便翻翻书或在网上逛一圈就能找到答案。在本文中,笔者把自己学习Java的一些切身体会和过程写出来,供初学者做个参考。 5 e/ ^/ o9 c0 Z$ g$ v/ t5 y
5 k! |7 ?1 F. o1 O: A) h! u( ~ _ O6 |我在学习Java的过程中主要围绕以下几个方面来学习:
" D+ H& ]8 H6 C3 W6 M1 X& ^9 e5 w% l8 q5 n
1.时刻提醒自己Java是一种OOP语言工具,而不仅仅是编码,只有这样才能总体把握和运用Java。
+ G7 Z3 R: X! O; C$ X" s! }6 K7 d+ H! h0 E: g4 J
2.在学习的过程中,最好能够了解Java的底层机制,而不是仅仅停留在表层,不是抄书上的例子运行出结果就可以。要注意,即便对一个简单的例子也要有耐心去琢磨、调试、改动。
$ ^* W* w1 a9 ?, X* K
$ t0 t& \* M/ @! l6 X$ d* @; D9 t% F# U3.在学习的过程中一定要动手做、写代码,而不是抱一本书看看就行。很多东西和体会必须自己动手才能真正属于自己,最好能参与一些实际的项目。 ) X8 }, I1 t) u( a; T( D% [1 q2 C
5 |4 J% O& P0 D) s3 D# K4.在学到一定阶段后,你开始希望用学过的东西做些什么。这时的你应该开始学习一些更多、更复杂的知识,比如J2EE平台的构建、EJB的开发等。对于这一部分,我建议最好找一本较薄的书先了解一个大概,心里有个总体的认识,对更多的技术术语做个初步掌握。我认为这个阶段看看《J2EE技术实践》很不错,它可以让你了解J2EE包含的各种技术和框架,同时提供很多实际的例子来加深对J2EE的整体了解。
8 c- b# ]# I; {$ m) v5 H0 U. J5 i( J/ O2 f/ b, z" `: `; A
学习Java的兴趣和决心起了很关键的作用。在有了上述基础后,我便开始一步一步地学习Java。
6 i% B4 F+ \- g- S0 B+ [# o
# n; l; E, V" e9 B' \) p9 Y) I6 }5 ]( H7 O1 G- T
<CENTER><FONT color=#000099><b>Java环境的搭建</b></FONT></CENTER>
/ W0 _+ j- e6 K Q' ?7 T% ~/ w! w' L) ?5 T% J4 C1 y
要运行Java程序,必须安装JDK。JDK是整个Java的核心,其中包括了Java编译器、JVM、大量的Java工具以及Java基础API。 1 r6 w$ \9 g+ A2 M
) f- B5 ^' \* n* M% ?
可以从http://Java.sun.com下载JDK,有1.4版本和1.31版本。我的学习环境中首先,采用的是1.31版本。
; x$ v. k4 g! o0 K, J; @9 U. ?! Y5 S
解压安装。然后,进行环境设置。 0 q8 H9 j- w( f8 ^* R/ s/ H, [- }) y
! y, S# s# A3 V& O7 _( W<B>1.对于Windows平台要进行以下设置:</B> " S* J% {( }* l) T1 y/ e1 ^# { b
1 z" K% {. V0 F0 P
<CCID_NOBR>
, ?$ ~! g: b# K8 C- h+ Z2 P7 {7 h<TABLE align=center border=1 borderColorDark=#ffffff borderColorLight=black cellPadding=2 cellSpacing=0 width=550>- c. }/ d# `5 b# `+ H. j, H
" J1 B; ^6 Q. s; o" p
<TR>& H, ^. R" N$ F3 {
<TD bgColor=#e6e6e6 class=code>< RE><CCID_CODE>set PATH=YOUR_INSTALL_ DIR\bin; C:\Windows;C:\Windows\Command
' i1 F/ \1 E/ Uset classpath=. ;YOUR_INSTALL_DIR\lib\tools.jar</CCID_CODE></PRE></TD></TR></TABLE></CCID_NOBR>, X' C( N8 l1 U& a0 ?$ o
$ B; ]7 G) N4 Y& W* X6 R
<B>2.对于Linux平台要编辑/etc/profile文件:</B> ' ]: I& r6 G0 t) k, b; {
. {' U% @" O# U; f! [- b<CCID_NOBR>
1 }2 a: F' D4 J; I0 U3 C' k0 u<TABLE align=center border=1 borderColorDark=#ffffff borderColorLight=black cellPadding=2 cellSpacing=0 width=550>
7 Z# |9 R' W' }, i% M5 `, x5 `! w# \, n8 R
<TR>
* y* ^! N) B" t1 z<TD bgColor=#e6e6e6 class=code>< RE><CCID_CODE>JAVA_HOME=your_install_dir/JDK/j2sdk" h8 x/ R* x4 W4 @% F+ w& |
CLASSPATH=$JAVA_HOME/lib/tools.jar JAVA_HOME/lib/td.jar JAVA_HOME/jr
0 _, c# m" P% Q7 ]- ?: S-e/lib/rt.jar:.8 S) t' \) ~9 G2 m
PATH=$PATH JAVA_HOME/bin
; i! I( {& y1 ^; C( mexport PATH PS1 USER LOGNAME MAIL HOSTNAME HISTSIZE HISTFILESIZE
6 s) P- {- d$ UINPUTRC JAVA_HOME CLASSPATH RESIN_HOME</CCID_CODE></PRE></TD></TR></TABLE></CCID_NOBR>
( e- n/ ^: i. a! r( s( k5 {" v
6 C" h# a+ n6 R最后,在终端上输入Java看能不能找到这个命令,如果能找到安装就成功了。
& W6 n& F( y3 N8 X7 t0 c, J7 Z& k* f A
下面介绍一下JDK的几个重要的命令: 1 ]! Z' f6 @) b+ g4 ^; G# F4 I" ~
+ S5 U( p4 o% J9 n% z
◆Java执行工具,是启动JVM(虚拟机)并执行class(BYTE CODE)文件的命令; * O& k+ j! l: ?/ r; z7 B; m
& s' f7 l7 t5 i: o+ z9 C5 N9 I& n6 R◆javac 编译器,由.java文件生成.class文件; + j% ?$ m0 }! w+ O0 u
$ z# O' b4 Z; u& C& X0 ]4 A# h◆jar Java压缩打包工具;
p1 e" S" y/ N& k5 K- f% t
# J- z3 P1 B8 ]; A+ A◆Javadoc 文档生成器。
' \) U! ]5 g, G) ]4 d7 T% q. Z2 E" Z# |6 J f% Q" M5 i( o
最后就是JDK Documentation,这是JDK的联机帮助文档,是最有用和最重要的学习参考文档,应该多看。 ! [+ N# t0 r8 ~) |: [4 @* p! I
0 |7 u$ V8 I8 c. l+ ?2 l2 r2 f
2 y$ {4 N z8 {0 H D- {1 R2 @<CENTER><FONT color=#000099><b>开始写自己的代码</b></FONT></CENTER>
; u7 Q! `; q7 |$ \% e& {3 @) [% Q
现在环境有了,应该写个简单的代码进行测试了。还是从经典的“hello word”开始。 ' y- ], ~) j8 i! ?6 o, j' q$ t
1 ?, D$ v4 _( r# r: F<B>1. 先用编辑器写一代码(我用的是Linux的vi):</B>
) r) t+ P+ v" [- _4 a2 ^$ v% K/ q- S; z3 Y
<CCID_NOBR>
9 o `1 O; ~8 B% O5 C5 l7 E; n/ f& ~<TABLE align=center border=1 borderColorDark=#ffffff borderColorLight=black cellPadding=2 cellSpacing=0 width=550>
4 G4 i$ c" R* N: w4 N9 |2 E9 j
3 j) k8 ]/ i+ c1 Y& f* k% M<TR>0 ^6 o( ?. l) d1 ^4 L' R
<TD bgColor=#e6e6e6 class=code>< RE><CCID_CODE>[stone@coremsg work]$ vi Hello.Java q8 [* r3 l1 J
public class Hello{
/ C( c+ v5 G5 n0 b9 G public static void main(String []argc){% G& [ O4 C; [' X) a
System.out.println("Hello Word!");& z. `1 `& w; P2 i2 K
}& J+ G& D* u% ^% W
}</CCID_CODE></PRE></TD></TR></TABLE></CCID_NOBR>, t2 d; x/ E* y+ Z/ E5 s( m
* A m0 s: O# T: w; O( v: D" {2 F4 ?
<B>2. 编译:</B> 7 A) ]4 x* n. a8 d/ k/ w- s
8 p- [( O4 N$ o
<CCID_NOBR>0 d! P! f! c6 e, @/ j; y6 ^3 P7 @
<TABLE align=center border=1 borderColorDark=#ffffff borderColorLight=black cellPadding=2 cellSpacing=0 width=550>- o6 S2 C+ H2 P2 _2 e$ R" U
2 \# i6 h& ]! s. f<TR>
6 t6 T7 u) f0 T+ p; S' v, E<TD bgColor=#e6e6e6 class=code>< RE><CCID_CODE>[stone@coremsg work]$ Javac Hello.Java</CCID_CODE></PRE></TD></TR></TABLE></CCID_NOBR>+ o$ j3 @/ D% u ?4 ]2 e c
2 |; D/ u% V P<B>3. 执行:</B>
6 k; q. q9 o+ {; m8 o( I: |- z: x) l! g
<CCID_NOBR>2 N( b" u9 J/ L+ F
<TABLE align=center border=1 borderColorDark=#ffffff borderColorLight=black cellPadding=2 cellSpacing=0 width=550>
$ p4 d4 m* O @
: {* h$ C( ~! W* W, j; l<TR>
# G! Z$ n/ q; I* a" w. l% o( k" Q5 g<TD bgColor=#e6e6e6 class=code>< RE><CCID_CODE>[stone@coremsg work]$ Java Hello6 [& ~/ e# R: C a' f; Z9 G
Hello Word!</CCID_CODE></PRE></TD></TR></TABLE></CCID_NOBR>& y4 C' p+ h e/ h. I
7 A6 T; I+ |' x; t, K
成功了!这就是我的第一个Java程序。从那时起我知道已开始走进Java的世界,接下来就靠自己的努力了。在这个过程中,笔者认为有几点需要注意。
/ h5 P' p4 c \1 n& {+ X( u& K4 n7 y) a) T. i' k
学习一门新的语言,参考书是离不开的。我的建议是开始最好找一本篇幅较短的入门书来学习那些最简单、最基本的东西,包括学习Java语法等。同时,对一个最简单的程序也应该多去调试,多想想如果改动一下会出现什么结果?为什么必须那样写?多去想想这些问题然后去操作,会让你有更多的收获。这样反复地思考是很有用的。此外,在这一阶段还应该多看JDK的联机帮助,尽量多地掌握JDK提供的Java基本类库API。
; r4 h! M. n6 v3 b3 X4 d7 F K3 p/ a0 p% \3 ~ {" O/ |) D; A h
在有一定基础、能够写一些简单的程序后,可以开始看《Thinking in Java》这本书。它比较完整地介绍了Java的语法、面向对象的特性、核心类库等。通过这一层次的学习能够加深对Java的理解和底层原理的运用,同时又可以完整地了解Java的整个体系。在这一阶段,应该重点学习Java的面向对象编程语言的特性,比如继承、构造器、抽象类、接口、方法的多态、重载、覆盖、Java的异常处理机制等,要对上述概念有非常清楚的了解。这样做的目的,是要让自己把这些技术应用到实践中进行合理的程序设计(比如,你会考虑一个类是用抽象还是接口来设计等)。这就要求必须在大量的实践中去应用和学习。这也是当初很多朋友给我的建议。
7 E7 C, y6 P" w6 A5 R. }" Y4 K, d T
* {* H5 h0 q" w% ^, U& p% w<CENTER><FONT color=#000099><b>学习更多</b></FONT></CENTER>7 l0 s) h9 o; ]. |
; K2 z: M& m6 C5 `4 S. b如果要用Java来完成各种功能更强大的任务,那么就要学习语言以外的更多的东西。
5 M: B4 H7 b0 P! B: O5 W
0 D9 q- X/ q* N6 n! ?<B>1.Java Web编程</B> . A* p) a4 w4 u7 K, k2 R) S+ Y- f
; A1 a h# s. y1 L2 i
对于Java Web 编程来说,应该而且必须熟悉和掌握HTTP协议,可以参考 Stevens的《TCP/IP 详解》第三卷。Java Servlet技术提供了生成动态Web页面内容的能力,这在你的Java项目中是最基本的功能之一,所以必须学习。通过这一阶段的学习应该掌握Servlet/JSP的Web编程。
5 j4 D" b# j8 w" ~9 H
" X ~0 T% [8 c% h<B>2. J2EE的学习</B>
; u. E1 | a/ j$ Q# X3 t. \/ g4 Q9 g/ w/ h, J
J2EE包含的技术太多了。如果你想坐在桌子旁边抱着一大堆书来学习的话,效果不大的。我建议在开始这一阶段的学习的时候,可以按以下步骤来做,总的思想是“总体把握,各个击破”。 0 r2 N6 A( T. {5 V4 K/ H
* |. F, N( J4 Q6 p# O
◆ 了解J2EE中的技术术语的含义。 $ r; b6 x; x7 _
& [9 s; y+ M% [6 `
我的感觉是J2EE标准中涉及到的各种技术很多,如果一开始就一个一个去学习的话是不现实的,也是没效果的。我的建议是,先对其中的技术有个大概的了解,比如EJB、JavaIDL、JTA等。可能你不知道怎么去写一个EJB,但是要知道什么是EJB、它能做什么,当有了这样的概念后,再去有目的地学习它就会快很多。我还要再重复一句——必须要在实践中动手去做才行。 ! A' n# Q" j* L9 U! c. {
' @* F0 e! F3 h O◆ 了解J2EE中的设计模式,这样能帮助你对J2EE做个整体把握。 0 p( G( {1 B9 I$ K: _
# }9 X4 I1 N+ n! p/ o0 |MVC开发模式被证明是有效的处理方法之一。它可以分离数据访问和数据表现。你可以开发一个有伸缩性的、便于扩展的控制器,来维护整个流程。通过这一层次的学习,当你面对一个项目的时候,应该首先把握它的总体架构的设计,以及决定采用J2EE标准中的哪些技术。 9 l0 S- {6 q" \2 L- r
: Z3 {- {+ J0 Y6 Y8 t4 b" i- Z◆ 了解一些J2EE平台的典型案列,加深对这一技术的概念和理解。
- t. u+ N4 t* y- d- B8 g4 ~, R7 w! C3 v% S7 ^
平时可以多留意这方面,熟悉一些典型案例,分析它为什么要采用那个时间?那样做能达到什么样的目的?然后联系到自己身边的项目是否可以作为参考。 8 {, B* `# {! Q k4 R9 L
+ ?, `" a7 O' q# y' I% e
◆ 学习J2EE下的各种技术。
J U5 y% t6 Q5 A9 z
g l7 J5 j9 ?4 }5 j; _在有了前几阶段的学习后,可以自己搭建一个J2EE平台开始具体学习每一种技术。你可以参与公司相关项目进行学习,也可以自己搭建一个平台进行学习。这时候应该找点相关的书来一步一步学习,没有捷径可走。如果你不满足于这些,那么还应该更深入地学习UML、设计模式等方面的东西。 |
zan
|