数学建模社区-数学中国

标题: [转帖]初学Java注意什么? [打印本页]

作者: god    时间: 2005-3-31 01:33
标题: [转帖]初学Java注意什么?
本文选自:开放系统世界——赛迪网  2002年12月18日 4 `; Z, i9 O2 ~+ M. \6 g3 @, w( H
Java总有它的千般好处使你选择它,但这些随便翻翻书或在网上逛一圈就能找到答案。在本文中,笔者把自己学习Java的一些切身体会和过程写出来,供初学者做个参考。
1 g6 ~9 X* v0 f$ A5 R' @% k5 d
4 N' T" b/ E# L) A9 s) w9 [3 v8 [& e我在学习Java的过程中主要围绕以下几个方面来学习: 2 N. }1 t* R) I% S3 {

) h" [& J5 p# [; Q6 e1.时刻提醒自己Java是一种OOP语言工具,而不仅仅是编码,只有这样才能总体把握和运用Java。
  C. r4 q6 [7 ?" o9 G: m7 V( T( g4 L5 D
2.在学习的过程中,最好能够了解Java的底层机制,而不是仅仅停留在表层,不是抄书上的例子运行出结果就可以。要注意,即便对一个简单的例子也要有耐心去琢磨、调试、改动。 - Y% y; }7 b% Y. J- }  ^

1 ]# I  @) z3 ^+ v  p  k4 d/ K3.在学习的过程中一定要动手做、写代码,而不是抱一本书看看就行。很多东西和体会必须自己动手才能真正属于自己,最好能参与一些实际的项目。 ) N/ e+ U' _  c7 x0 s0 G

4 f8 X  X* S+ x4.在学到一定阶段后,你开始希望用学过的东西做些什么。这时的你应该开始学习一些更多、更复杂的知识,比如J2EE平台的构建、EJB的开发等。对于这一部分,我建议最好找一本较薄的书先了解一个大概,心里有个总体的认识,对更多的技术术语做个初步掌握。我认为这个阶段看看《J2EE技术实践》很不错,它可以让你了解J2EE包含的各种技术和框架,同时提供很多实际的例子来加深对J2EE的整体了解。
& o( Y" F# V! Z8 [" E
7 H- P# r& i; ~9 o) Z; t学习Java的兴趣和决心起了很关键的作用。在有了上述基础后,我便开始一步一步地学习Java。 3 ~% l1 e& y3 T" F

# S  U/ {1 q* Q: x
1 O# j- v2 _$ s9 Z3 r8 e/ ?7 c! N<CENTER><FONT color=#000099><b>Java环境的搭建</b></FONT></CENTER>
" n! s2 g" b% D0 U- S5 N$ ~
1 x1 S9 t9 c4 M8 P1 q% a要运行Java程序,必须安装JDK。JDK是整个Java的核心,其中包括了Java编译器、JVM、大量的Java工具以及Java基础API。
. I# c) B5 O9 x
- g/ ^3 c1 w% ]" X" X3 Z! k) z# L8 z可以从http://Java.sun.com下载JDK,有1.4版本和1.31版本。我的学习环境中首先,采用的是1.31版本。 $ a  j: g$ S' P2 z9 Q$ y8 H* o" t
1 E/ i9 Q6 K* N% J; y
解压安装。然后,进行环境设置。 / A6 @$ w0 r* X: [  p& ^; n0 \# b
$ w- C  _% J; u5 Q
<B>1.对于Windows平台要进行以下设置:</B>
; j0 ?& y* g# U9 c7 L1 v
4 l( `  w! h! D3 M+ E& L$ V<CCID_NOBR>$ }) I& G) @3 E( B
<TABLE align=center border=1 borderColorDark=#ffffff borderColorLight=black cellPadding=2 cellSpacing=0 width=550>
0 n1 z8 L9 ~% N5 V- A4 W1 g. ]- C* }1 Q# H2 \2 s; L6 p
<TR>/ {$ @( I, F2 h3 i  r  T
<TD bgColor=#e6e6e6 class=code><RE><CCID_CODE>set PATH=YOUR_INSTALL_ DIR\bin; C:\Windows;C:\Windows\Command
& w  @9 f$ p$ l' j! S% ]5 sset classpath=. ;YOUR_INSTALL_DIR\lib\tools.jar</CCID_CODE></PRE></TD></TR></TABLE></CCID_NOBR>
* x7 U! ~( z2 |0 a" w$ h% k' ~* x5 G
2 S9 s% ?' @9 Z: U& J2 ~% k5 ]<B>2.对于Linux平台要编辑/etc/profile文件:</B>
" ]/ s* _2 ^) O
: Q& z1 c* M/ v<CCID_NOBR>% j. M) \3 O: H+ ^, O
<TABLE align=center border=1 borderColorDark=#ffffff borderColorLight=black cellPadding=2 cellSpacing=0 width=550>/ t; o/ K) f( ^" u: d9 Z1 P6 Y$ Y* D* }

5 |# R- U# |1 e9 y( M  ]0 N5 K<TR>* ^$ l; [0 H/ H/ P1 Z
<TD bgColor=#e6e6e6 class=code><RE><CCID_CODE>JAVA_HOME=your_install_dir/JDK/j2sdk  z5 h8 K6 {: O& g, j: i
CLASSPATH=$JAVA_HOME/lib/tools.jarJAVA_HOME/lib/td.jarJAVA_HOME/jr  
/ c2 }" ?; y5 {8 E+ g1 _4 V/ C. S# z-e/lib/rt.jar:.3 |' z  f. f# p, Y% U6 F- K% e
PATH=$PATHJAVA_HOME/bin& Y0 E" I  S  J/ [9 {3 c1 O, s
export PATH PS1 USER LOGNAME MAIL HOSTNAME HISTSIZE HISTFILESIZE   
" E# U' n7 |6 v' M& _INPUTRC JAVA_HOME CLASSPATH RESIN_HOME</CCID_CODE></PRE></TD></TR></TABLE></CCID_NOBR>9 Y8 G/ v) |. Y# |' s, q' G# C
+ L+ _9 k* B( m1 j
最后,在终端上输入Java看能不能找到这个命令,如果能找到安装就成功了。 $ Q' J7 {! I! G2 b

# S. \2 k5 s: `4 q! o下面介绍一下JDK的几个重要的命令: 8 M9 h& n1 D. O1 H) q
  T1 P. i) }1 W- ^! C' d- l: ^
◆Java执行工具,是启动JVM(虚拟机)并执行class(BYTE CODE)文件的命令; 8 ~7 C7 ]" W3 L9 W# M% l8 `+ I

/ i5 f" N' e, _9 G# e5 F7 C/ Z◆javac 编译器,由.java文件生成.class文件; / {% P* w+ G# j& m; P/ ?$ {9 S
( f( f2 Q" x) @4 z- L: }, D: D! b
◆jar Java压缩打包工具; 5 j0 n# H+ ~6 y
% l; n3 q6 _2 S5 E% G1 C% t
◆Javadoc 文档生成器。   k9 @* u. h9 l% W" f

+ `3 `  W' K; _5 N最后就是JDK Documentation,这是JDK的联机帮助文档,是最有用和最重要的学习参考文档,应该多看。
+ z  {2 M  b; O8 O9 ~6 ?" i, ~1 \% {$ i) Y
/ r# L3 K: ]8 y, W- h) T$ ^- Y, |
<CENTER><FONT color=#000099><b>开始写自己的代码</b></FONT></CENTER>7 e8 V8 s# o  {% l
) I( Y; I3 n( M3 V# J7 @% G6 v) }6 l
现在环境有了,应该写个简单的代码进行测试了。还是从经典的“hello word”开始。 1 D) P/ {& T0 f. N" D  Z. t( G4 V, i4 E
9 M0 g* s# L) ~+ ^% g; O( \5 \$ b
<B>1. 先用编辑器写一代码(我用的是Linux的vi):</B>
+ ~& q; S: Y* P% v. t. Y3 a' p2 ?2 g" i/ w/ m) e$ T( Q2 L: H
<CCID_NOBR>7 C  q, U! D' J& \) p5 Y9 A
<TABLE align=center border=1 borderColorDark=#ffffff borderColorLight=black cellPadding=2 cellSpacing=0 width=550>
; I# m: I" E/ @: }) n' k/ \. Z( r& l; h4 q% o- A
<TR>
, f0 ?; r# W# x6 x% _: t1 D9 D<TD bgColor=#e6e6e6 class=code><RE><CCID_CODE>[stone@coremsg work]$ vi Hello.Java2 X  G5 K6 w0 O
  public class Hello{
* A1 t% T( h; v! Y        public static void main(String []argc){# D: M7 G- ~- K' ^
                System.out.println("Hello Word!");. x, {2 ]; ?; {4 w
        }- E" O8 C+ ~5 X2 d$ B# G. P  b
  }</CCID_CODE></PRE></TD></TR></TABLE></CCID_NOBR>
8 L/ p% ], B' {: i  v, D& J" `
" `/ O2 ~3 V8 x<B>2. 编译:</B>
7 `: w# G& o5 Q% B+ E) y. q
% o, Z4 _& a' c& S8 l2 v<CCID_NOBR>
( k- J: g6 U9 `1 T! K) u  h. D<TABLE align=center border=1 borderColorDark=#ffffff borderColorLight=black cellPadding=2 cellSpacing=0 width=550>& b% r0 E" t% V; A$ y7 o
' v; }% ^# i+ U0 \
<TR>+ a" ^. W5 ~8 M. R, d4 O/ a
<TD bgColor=#e6e6e6 class=code><RE><CCID_CODE>[stone@coremsg work]$ Javac Hello.Java</CCID_CODE></PRE></TD></TR></TABLE></CCID_NOBR>
/ @  _! C  N% g7 i4 q+ M8 D; x  H) @% V
<B>3. 执行:</B>
3 `7 {9 v. y% j; k$ ^2 E
2 }0 O/ q  `' u0 t5 m<CCID_NOBR>% E( e& n- z; @  h: F- g! X
<TABLE align=center border=1 borderColorDark=#ffffff borderColorLight=black cellPadding=2 cellSpacing=0 width=550>
7 }& Q- k* y$ C* `* c, c& r, }$ K3 E, D2 ~
<TR>( q6 z) g4 H; i
<TD bgColor=#e6e6e6 class=code><RE><CCID_CODE>[stone@coremsg work]$ Java Hello
. h, c+ ]5 O  B5 f- P     Hello Word!</CCID_CODE></PRE></TD></TR></TABLE></CCID_NOBR>
. O4 X$ C% I+ d8 X4 z' `0 t. i2 ^
8 W% ^3 i: i0 D9 Y9 L. |: ~成功了!这就是我的第一个Java程序。从那时起我知道已开始走进Java的世界,接下来就靠自己的努力了。在这个过程中,笔者认为有几点需要注意。
; ]* M: A) Y, p4 Z: W4 Z0 P- {, B4 u1 w) j, i! ~7 q8 a
学习一门新的语言,参考书是离不开的。我的建议是开始最好找一本篇幅较短的入门书来学习那些最简单、最基本的东西,包括学习Java语法等。同时,对一个最简单的程序也应该多去调试,多想想如果改动一下会出现什么结果?为什么必须那样写?多去想想这些问题然后去操作,会让你有更多的收获。这样反复地思考是很有用的。此外,在这一阶段还应该多看JDK的联机帮助,尽量多地掌握JDK提供的Java基本类库API。
+ D+ S& @: l7 M5 z' r' r: J! w$ ?. t7 A$ h8 [) {& s
在有一定基础、能够写一些简单的程序后,可以开始看《Thinking in Java》这本书。它比较完整地介绍了Java的语法、面向对象的特性、核心类库等。通过这一层次的学习能够加深对Java的理解和底层原理的运用,同时又可以完整地了解Java的整个体系。在这一阶段,应该重点学习Java的面向对象编程语言的特性,比如继承、构造器、抽象类、接口、方法的多态、重载、覆盖、Java的异常处理机制等,要对上述概念有非常清楚的了解。这样做的目的,是要让自己把这些技术应用到实践中进行合理的程序设计(比如,你会考虑一个类是用抽象还是接口来设计等)。这就要求必须在大量的实践中去应用和学习。这也是当初很多朋友给我的建议。
  Q" C3 W2 J" \& b; J0 j: y4 i
) O- B! Q) A% a
4 o( M$ `% o0 o" ~<CENTER><FONT color=#000099><b>学习更多</b></FONT></CENTER>
) F' S8 Q: r. r7 J
# O5 b& L4 q- e0 n( ^/ x, x如果要用Java来完成各种功能更强大的任务,那么就要学习语言以外的更多的东西。
4 i! k, Y' o" x( L. c
1 R" d7 j8 ]- ?8 s# w, B0 k<B>1.Java Web编程</B>
# _2 B& ^$ q( U% L% f0 g, \  k: U% @0 `, r( f3 l; v
对于Java Web 编程来说,应该而且必须熟悉和掌握HTTP协议,可以参考 Stevens的《TCP/IP 详解》第三卷。Java Servlet技术提供了生成动态Web页面内容的能力,这在你的Java项目中是最基本的功能之一,所以必须学习。通过这一阶段的学习应该掌握Servlet/JSP的Web编程。 ; @! W# ~1 {- m4 \% E0 O! y& \
, L# S; E6 }+ R, o$ y) T7 U
<B>2. J2EE的学习</B>
& [! o/ Q. F2 Q2 Y4 _3 E
1 f8 r8 L5 i3 i+ e% SJ2EE包含的技术太多了。如果你想坐在桌子旁边抱着一大堆书来学习的话,效果不大的。我建议在开始这一阶段的学习的时候,可以按以下步骤来做,总的思想是“总体把握,各个击破”。   v& w4 v* c) _# K. ]
" u8 u, P0 ^- S* m8 P
◆ 了解J2EE中的技术术语的含义。 4 {8 A4 t# w/ p) _* `

# k( C6 I+ l0 [8 @1 _# l; Z我的感觉是J2EE标准中涉及到的各种技术很多,如果一开始就一个一个去学习的话是不现实的,也是没效果的。我的建议是,先对其中的技术有个大概的了解,比如EJB、JavaIDL、JTA等。可能你不知道怎么去写一个EJB,但是要知道什么是EJB、它能做什么,当有了这样的概念后,再去有目的地学习它就会快很多。我还要再重复一句——必须要在实践中动手去做才行。 & U3 q, p8 Z  d  {' i  J* c

% i6 P. k! G4 z5 |- u◆ 了解J2EE中的设计模式,这样能帮助你对J2EE做个整体把握。 9 B  }( R+ Z2 P. I1 B; ^* ]+ b$ s$ |

  m' j* X/ ?2 J( ?$ O* B2 r) qMVC开发模式被证明是有效的处理方法之一。它可以分离数据访问和数据表现。你可以开发一个有伸缩性的、便于扩展的控制器,来维护整个流程。通过这一层次的学习,当你面对一个项目的时候,应该首先把握它的总体架构的设计,以及决定采用J2EE标准中的哪些技术。
, B0 A: S7 P  O% \4 I: M% I% r" y2 Y1 B6 Y. _' y2 i% V
◆ 了解一些J2EE平台的典型案列,加深对这一技术的概念和理解。 ! W0 [8 M! W, o; `

- D4 p. `# Q; z. u# Y  N平时可以多留意这方面,熟悉一些典型案例,分析它为什么要采用那个时间?那样做能达到什么样的目的?然后联系到自己身边的项目是否可以作为参考。
( H' y/ M. ?. F$ _/ c* `* a6 L
& w# `( `, Z7 F9 H3 _; H◆ 学习J2EE下的各种技术。
. v. `) t$ q$ d2 f0 w* I+ c# y4 V2 K# q# T/ l& r
在有了前几阶段的学习后,可以自己搭建一个J2EE平台开始具体学习每一种技术。你可以参与公司相关项目进行学习,也可以自己搭建一个平台进行学习。这时候应该找点相关的书来一步一步学习,没有捷径可走。如果你不满足于这些,那么还应该更深入地学习UML、设计模式等方面的东西。




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5