数学建模社区-数学中国

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

作者: god    时间: 2005-3-31 01:33
标题: [转帖]初学Java注意什么?
本文选自:开放系统世界——赛迪网  2002年12月18日 7 ?/ O$ m/ d6 D0 w& R  k3 A. X2 g
Java总有它的千般好处使你选择它,但这些随便翻翻书或在网上逛一圈就能找到答案。在本文中,笔者把自己学习Java的一些切身体会和过程写出来,供初学者做个参考。 " G; Y% \- @. o7 B
; D% N: m1 d* m3 q: E% h2 Z8 a
我在学习Java的过程中主要围绕以下几个方面来学习: ( `$ ~! `& n( a! J

) D2 W1 m" z) ?& G3 k" G9 m9 A5 @1.时刻提醒自己Java是一种OOP语言工具,而不仅仅是编码,只有这样才能总体把握和运用Java。
2 ]& w3 Z6 ~( f0 G' v0 P8 Z/ }) d6 e' U3 @4 x0 J$ f
2.在学习的过程中,最好能够了解Java的底层机制,而不是仅仅停留在表层,不是抄书上的例子运行出结果就可以。要注意,即便对一个简单的例子也要有耐心去琢磨、调试、改动。 ! }! C0 C( U7 J+ d( s' f

8 j1 C) w$ W& T$ U9 c3.在学习的过程中一定要动手做、写代码,而不是抱一本书看看就行。很多东西和体会必须自己动手才能真正属于自己,最好能参与一些实际的项目。
( T( k4 T$ X3 r1 P% x' }0 F5 h' \% Q$ I5 J4 c; i! ^" Y
4.在学到一定阶段后,你开始希望用学过的东西做些什么。这时的你应该开始学习一些更多、更复杂的知识,比如J2EE平台的构建、EJB的开发等。对于这一部分,我建议最好找一本较薄的书先了解一个大概,心里有个总体的认识,对更多的技术术语做个初步掌握。我认为这个阶段看看《J2EE技术实践》很不错,它可以让你了解J2EE包含的各种技术和框架,同时提供很多实际的例子来加深对J2EE的整体了解。 * x( P: v* Y* Z# p6 d( \6 [0 j

$ j- W, M+ ^( X4 m1 u+ d学习Java的兴趣和决心起了很关键的作用。在有了上述基础后,我便开始一步一步地学习Java。 6 U4 }7 H5 x$ P& Q0 \# B6 G, W
" W! Q, S0 i8 T
/ V1 k" F# n, j0 a
<CENTER><FONT color=#000099><b>Java环境的搭建</b></FONT></CENTER>$ j4 ]7 r4 [( N+ [0 ~9 O! b
* u' _* U2 ^- z+ u- _3 r5 k& F3 ?
要运行Java程序,必须安装JDK。JDK是整个Java的核心,其中包括了Java编译器、JVM、大量的Java工具以及Java基础API。
+ ^8 C( d: y9 ?7 X0 e
& [7 V) x' d- ]7 o* [. g可以从http://Java.sun.com下载JDK,有1.4版本和1.31版本。我的学习环境中首先,采用的是1.31版本。 / Z! U4 v( @' I" s" e

/ T2 S1 p# i" C: J8 K0 N解压安装。然后,进行环境设置。 * z4 [. [+ d4 K
/ h; N3 C0 d9 q) A2 A8 S7 w- n
<B>1.对于Windows平台要进行以下设置:</B> . M0 m2 V* Q# M8 g2 _

: D# }* G) P, h! i<CCID_NOBR>
6 u# L, B; M" |- R( F2 U& o<TABLE align=center border=1 borderColorDark=#ffffff borderColorLight=black cellPadding=2 cellSpacing=0 width=550>
  U8 B6 x( B* l- G
3 v! K5 V( v% D' d9 h+ t: s% k<TR>9 j% `9 V- `& I- y9 m% p; ~+ B2 Q
<TD bgColor=#e6e6e6 class=code><RE><CCID_CODE>set PATH=YOUR_INSTALL_ DIR\bin; C:\Windows;C:\Windows\Command0 \6 B' b3 l/ }9 A
set classpath=. ;YOUR_INSTALL_DIR\lib\tools.jar</CCID_CODE></PRE></TD></TR></TABLE></CCID_NOBR>9 ]4 z- y# p* v4 |

+ X  d& C! E) u<B>2.对于Linux平台要编辑/etc/profile文件:</B> / P" ]- [' \+ D: ?3 p! F0 N5 q
' q" v- v6 o; J1 N6 j, X
<CCID_NOBR>4 p' d3 H, Y! ?! J" _# a
<TABLE align=center border=1 borderColorDark=#ffffff borderColorLight=black cellPadding=2 cellSpacing=0 width=550>9 f0 I  ~& I1 \

9 r5 _. ^+ ^+ w+ `0 ]  i<TR>
4 [4 L( S) [7 N& n* N<TD bgColor=#e6e6e6 class=code><RE><CCID_CODE>JAVA_HOME=your_install_dir/JDK/j2sdk: }5 Z1 t, v7 S6 ?# d: o
CLASSPATH=$JAVA_HOME/lib/tools.jarJAVA_HOME/lib/td.jarJAVA_HOME/jr  
5 }# x1 @! V; `+ }, |! a! ]-e/lib/rt.jar:.7 N4 O+ D9 o+ I- i. A( f
PATH=$PATHJAVA_HOME/bin* R9 Q: ]+ p. L3 g% U, W
export PATH PS1 USER LOGNAME MAIL HOSTNAME HISTSIZE HISTFILESIZE   
9 M" U7 T8 e. r9 ^INPUTRC JAVA_HOME CLASSPATH RESIN_HOME</CCID_CODE></PRE></TD></TR></TABLE></CCID_NOBR>
( O8 K/ ]0 l/ H" j: ]  q6 C5 N4 u$ R+ Y/ o1 u) t% l" j, c
最后,在终端上输入Java看能不能找到这个命令,如果能找到安装就成功了。
! C! l! i, y0 m% x; y% K# {/ O) k2 c
下面介绍一下JDK的几个重要的命令:
' i! w% Z# v7 ^* f2 ?# ]
5 {* s' N# E( s$ F$ b* Q" H0 B◆Java执行工具,是启动JVM(虚拟机)并执行class(BYTE CODE)文件的命令; & _$ r8 U8 H7 u! E, m7 f
8 }1 x8 |2 S# t' P8 m4 }6 L, ^
◆javac 编译器,由.java文件生成.class文件; 6 ^- n" e! E7 W) M7 ?' S3 U! I# x

9 W2 }% a, u% P+ G# h! x* f: Q◆jar Java压缩打包工具;
9 |, Q& t" x& @2 Y& G9 [7 `* I9 M! p; S! M
◆Javadoc 文档生成器。 7 }- e. o% N/ a5 Z, ]% `! Y& ~+ c
! [/ b: C+ ~$ P
最后就是JDK Documentation,这是JDK的联机帮助文档,是最有用和最重要的学习参考文档,应该多看。
5 l5 X; P' K0 _6 S6 k  s6 c$ u1 V% f1 D- A& ^
3 V" c  W/ X5 _  I
<CENTER><FONT color=#000099><b>开始写自己的代码</b></FONT></CENTER>
  X6 R: Q7 B4 U+ k4 y( S
5 E- {6 N* }& l0 n8 A. _7 J" N现在环境有了,应该写个简单的代码进行测试了。还是从经典的“hello word”开始。
5 x' e) F9 g% R/ Z! n3 g: ^- R# Z' ~; a; Q7 F# y/ k: P
<B>1. 先用编辑器写一代码(我用的是Linux的vi):</B>
- _( L! u: U4 Y, M1 U8 [& C
0 B- ~* x9 O  |) v# N, @<CCID_NOBR>& Q+ i# d" W. y8 h# j
<TABLE align=center border=1 borderColorDark=#ffffff borderColorLight=black cellPadding=2 cellSpacing=0 width=550>. d* X1 l. H$ E2 b4 N8 m( k: O8 l
* c, j9 @, j; |; S
<TR>- ^8 N/ J: I/ i& _9 }/ [8 H% j* ^
<TD bgColor=#e6e6e6 class=code><RE><CCID_CODE>[stone@coremsg work]$ vi Hello.Java
( p5 b$ _" k  r$ ^1 I+ A% Y( W& h1 J! V" |  public class Hello{. ^7 X' h  I  I3 v3 E, E1 B- z7 q
        public static void main(String []argc){7 k& g0 O$ J6 |: V8 v1 U
                System.out.println("Hello Word!");
' G* d; q4 G% J- S  }+ \" i2 P        }
0 I6 n9 D9 z8 U$ t9 U  }</CCID_CODE></PRE></TD></TR></TABLE></CCID_NOBR>, q! e! Q2 Q7 I, `9 I
6 ~7 _' \1 b, B% H* u0 h" a  K
<B>2. 编译:</B>
& U" W; n. h! M5 R( I! F) D  p4 v: F: F! G( p
<CCID_NOBR>9 q5 X" B1 A* Z/ W2 L" h: L
<TABLE align=center border=1 borderColorDark=#ffffff borderColorLight=black cellPadding=2 cellSpacing=0 width=550># Y3 l6 S  p( m3 z

  G0 G0 C( R8 M# [<TR>
' y8 V2 F7 e) a% h0 R<TD bgColor=#e6e6e6 class=code><RE><CCID_CODE>[stone@coremsg work]$ Javac Hello.Java</CCID_CODE></PRE></TD></TR></TABLE></CCID_NOBR>  R) g0 `1 c" R5 Z* l* v0 o
# H6 Y+ \9 L8 Q% m$ w
<B>3. 执行:</B> 0 p) R- C$ Y( Q% h% Q1 `: f

. A, |/ Q' I& Q# P! a$ h7 e<CCID_NOBR>
; ]% l4 B. K! @7 `9 e8 m( A  m& A<TABLE align=center border=1 borderColorDark=#ffffff borderColorLight=black cellPadding=2 cellSpacing=0 width=550>8 L" m7 A2 O7 {
# i( d8 e3 ~9 l) p
<TR>5 i! u0 _% Q6 |+ k( |( ^+ L8 m1 t
<TD bgColor=#e6e6e6 class=code><RE><CCID_CODE>[stone@coremsg work]$ Java Hello. B4 h' b: L6 `! H% Q, K5 C, D
     Hello Word!</CCID_CODE></PRE></TD></TR></TABLE></CCID_NOBR>
/ H. C1 y: N6 L2 K3 N* p: x9 z' w6 D
成功了!这就是我的第一个Java程序。从那时起我知道已开始走进Java的世界,接下来就靠自己的努力了。在这个过程中,笔者认为有几点需要注意。 5 d' d* ]5 H! `% Q6 H1 m
( m# A7 ~% c6 K1 X
学习一门新的语言,参考书是离不开的。我的建议是开始最好找一本篇幅较短的入门书来学习那些最简单、最基本的东西,包括学习Java语法等。同时,对一个最简单的程序也应该多去调试,多想想如果改动一下会出现什么结果?为什么必须那样写?多去想想这些问题然后去操作,会让你有更多的收获。这样反复地思考是很有用的。此外,在这一阶段还应该多看JDK的联机帮助,尽量多地掌握JDK提供的Java基本类库API。 ; m5 N# R# u( }) f7 x1 @2 o

) |) a' T* }0 t% l7 E- D* O在有一定基础、能够写一些简单的程序后,可以开始看《Thinking in Java》这本书。它比较完整地介绍了Java的语法、面向对象的特性、核心类库等。通过这一层次的学习能够加深对Java的理解和底层原理的运用,同时又可以完整地了解Java的整个体系。在这一阶段,应该重点学习Java的面向对象编程语言的特性,比如继承、构造器、抽象类、接口、方法的多态、重载、覆盖、Java的异常处理机制等,要对上述概念有非常清楚的了解。这样做的目的,是要让自己把这些技术应用到实践中进行合理的程序设计(比如,你会考虑一个类是用抽象还是接口来设计等)。这就要求必须在大量的实践中去应用和学习。这也是当初很多朋友给我的建议。
2 y8 f  R4 ^; U- N6 D, D/ w2 {% v9 ], g4 C3 S+ S7 o& [

0 j7 D* l4 ]) J: t/ F<CENTER><FONT color=#000099><b>学习更多</b></FONT></CENTER>
+ h. C7 D0 ?$ \, b' {) h4 a5 H8 n$ _, P3 l' }+ m
如果要用Java来完成各种功能更强大的任务,那么就要学习语言以外的更多的东西。 $ h  T0 q% f$ L0 `

! i. r+ d' K! g<B>1.Java Web编程</B> 3 A- N! h, p( Q9 }

/ q2 j# h0 l$ S* Z对于Java Web 编程来说,应该而且必须熟悉和掌握HTTP协议,可以参考 Stevens的《TCP/IP 详解》第三卷。Java Servlet技术提供了生成动态Web页面内容的能力,这在你的Java项目中是最基本的功能之一,所以必须学习。通过这一阶段的学习应该掌握Servlet/JSP的Web编程。
& m* g9 c+ _" j/ s2 @
0 q* b2 M  I3 G2 K, [) ]<B>2. J2EE的学习</B>
& g0 ~6 O3 U2 ^5 {2 x8 ~; }+ K' _# C& `9 ]* J4 O; D- w
J2EE包含的技术太多了。如果你想坐在桌子旁边抱着一大堆书来学习的话,效果不大的。我建议在开始这一阶段的学习的时候,可以按以下步骤来做,总的思想是“总体把握,各个击破”。 * A+ M+ M  s, X8 W! u: ]

; n8 }2 t' z& x* ^/ \5 n+ J◆ 了解J2EE中的技术术语的含义。
5 i. T7 e$ C8 K
% O( Y' [/ z$ e9 t我的感觉是J2EE标准中涉及到的各种技术很多,如果一开始就一个一个去学习的话是不现实的,也是没效果的。我的建议是,先对其中的技术有个大概的了解,比如EJB、JavaIDL、JTA等。可能你不知道怎么去写一个EJB,但是要知道什么是EJB、它能做什么,当有了这样的概念后,再去有目的地学习它就会快很多。我还要再重复一句——必须要在实践中动手去做才行。
! d: }, x+ w3 w9 J: J0 r. P6 H  I/ m
◆ 了解J2EE中的设计模式,这样能帮助你对J2EE做个整体把握。 0 ?5 `! n7 ?3 `4 v: |

) Q0 K) N" C: {7 O" _! sMVC开发模式被证明是有效的处理方法之一。它可以分离数据访问和数据表现。你可以开发一个有伸缩性的、便于扩展的控制器,来维护整个流程。通过这一层次的学习,当你面对一个项目的时候,应该首先把握它的总体架构的设计,以及决定采用J2EE标准中的哪些技术。
- B5 e( z( B5 S1 B+ C1 }: {% S
. R( @. q' F0 I% e# {# N. i" _◆ 了解一些J2EE平台的典型案列,加深对这一技术的概念和理解。
; g, h3 y5 h% L+ b3 k$ `* [
# }1 [% `5 Y7 O- i( W. z4 y平时可以多留意这方面,熟悉一些典型案例,分析它为什么要采用那个时间?那样做能达到什么样的目的?然后联系到自己身边的项目是否可以作为参考。
7 m. x( V- b" Q& {; D6 P. ]
) Q0 N; M0 N3 b3 a! d◆ 学习J2EE下的各种技术。 , V! l" |1 S6 s9 U- \

. p7 r( A) a- k1 N7 C! m/ T" F; s2 ~" S在有了前几阶段的学习后,可以自己搭建一个J2EE平台开始具体学习每一种技术。你可以参与公司相关项目进行学习,也可以自己搭建一个平台进行学习。这时候应该找点相关的书来一步一步学习,没有捷径可走。如果你不满足于这些,那么还应该更深入地学习UML、设计模式等方面的东西。




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