数学建模社区-数学中国

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

作者: god    时间: 2005-3-31 01:33
标题: [转帖]初学Java注意什么?
本文选自:开放系统世界——赛迪网  2002年12月18日 # h( F( t' o. A6 [% k9 f& \
Java总有它的千般好处使你选择它,但这些随便翻翻书或在网上逛一圈就能找到答案。在本文中,笔者把自己学习Java的一些切身体会和过程写出来,供初学者做个参考。
$ G! Y9 F" W4 `4 C( F% E( F2 C0 c0 b1 M( z  u! M( D& I/ E
我在学习Java的过程中主要围绕以下几个方面来学习: 6 z  q. W- T' \

( s' P  M$ m  `, d1.时刻提醒自己Java是一种OOP语言工具,而不仅仅是编码,只有这样才能总体把握和运用Java。 . L1 j2 k0 d3 a

* L% _& j% [- Z. D+ s2.在学习的过程中,最好能够了解Java的底层机制,而不是仅仅停留在表层,不是抄书上的例子运行出结果就可以。要注意,即便对一个简单的例子也要有耐心去琢磨、调试、改动。
  T/ I& Q& U3 h$ [; o9 ]) U
+ l6 U! O' G2 C+ v1 T4 {& ?3.在学习的过程中一定要动手做、写代码,而不是抱一本书看看就行。很多东西和体会必须自己动手才能真正属于自己,最好能参与一些实际的项目。 7 n; O  u+ i9 S/ e$ m+ O, {& u

/ R; S# p) L2 R4 M4.在学到一定阶段后,你开始希望用学过的东西做些什么。这时的你应该开始学习一些更多、更复杂的知识,比如J2EE平台的构建、EJB的开发等。对于这一部分,我建议最好找一本较薄的书先了解一个大概,心里有个总体的认识,对更多的技术术语做个初步掌握。我认为这个阶段看看《J2EE技术实践》很不错,它可以让你了解J2EE包含的各种技术和框架,同时提供很多实际的例子来加深对J2EE的整体了解。
8 q$ T0 J0 t) F3 A0 @8 ]& T" c2 _$ b+ O; b3 d. n- b: M) Q3 w
学习Java的兴趣和决心起了很关键的作用。在有了上述基础后,我便开始一步一步地学习Java。 3 l( C. t9 S' z0 S3 |7 z- Y( `' Q$ ~
# I  h# x" I# n; P( y% s

# w* @) J4 I5 H6 G, n- {* x<CENTER><FONT color=#000099><b>Java环境的搭建</b></FONT></CENTER>$ {5 ], G* a5 B) l5 g3 O

% {3 d8 [" f! |" _( N; `6 n要运行Java程序,必须安装JDK。JDK是整个Java的核心,其中包括了Java编译器、JVM、大量的Java工具以及Java基础API。
2 ]- H4 W8 ^0 {0 J) o: s/ W1 T* z" O$ z/ z* {/ }
可以从http://Java.sun.com下载JDK,有1.4版本和1.31版本。我的学习环境中首先,采用的是1.31版本。
! S* O& F5 H* O* x. y! ~( O: l2 u" B) m
: ^; q1 z$ j, h( q, y解压安装。然后,进行环境设置。
$ M/ X8 l3 V) D) h" `
* l  P3 y% Y' N$ ^4 B3 }! C<B>1.对于Windows平台要进行以下设置:</B>
" ^2 ^& V( [6 Z4 r
$ c: A$ u0 Q) j% ^4 ~1 r- W) e0 B<CCID_NOBR>2 E  y! c' M, V7 `8 K  Q' K
<TABLE align=center border=1 borderColorDark=#ffffff borderColorLight=black cellPadding=2 cellSpacing=0 width=550>" R2 U9 ~2 z* p" L. T. T3 h

2 P% E+ f8 p- F. K$ {9 |<TR>
0 I! I4 d6 o/ V4 {<TD bgColor=#e6e6e6 class=code><RE><CCID_CODE>set PATH=YOUR_INSTALL_ DIR\bin; C:\Windows;C:\Windows\Command
; G1 x- I$ U# V% e" X/ \* }set classpath=. ;YOUR_INSTALL_DIR\lib\tools.jar</CCID_CODE></PRE></TD></TR></TABLE></CCID_NOBR>
6 R' T# {; g0 z. p( V6 @/ a. b) u4 Y) `
<B>2.对于Linux平台要编辑/etc/profile文件:</B> 1 A0 Q, u  S" x; `0 ~: `- Y; @/ Q: U

( O8 ^# j+ ?' I0 ~. S! k) p<CCID_NOBR>
7 u7 M. V% W. x( P+ \! ~/ P# n) V/ y) t<TABLE align=center border=1 borderColorDark=#ffffff borderColorLight=black cellPadding=2 cellSpacing=0 width=550>/ z6 w8 F. s. h: G7 H
5 B$ u0 p. X# \" q- g
<TR>
% ?' e% e" f9 o  H, C<TD bgColor=#e6e6e6 class=code><RE><CCID_CODE>JAVA_HOME=your_install_dir/JDK/j2sdk& W( P0 L$ Y4 b/ e: L
CLASSPATH=$JAVA_HOME/lib/tools.jarJAVA_HOME/lib/td.jarJAVA_HOME/jr  % N1 q( Q1 B# o. O% P; I& |1 j4 o
-e/lib/rt.jar:.+ J6 |9 P' l' J* N! {1 P
PATH=$PATHJAVA_HOME/bin1 ?( R3 H6 \- c. l4 P2 {0 r
export PATH PS1 USER LOGNAME MAIL HOSTNAME HISTSIZE HISTFILESIZE   
) i+ U% z; r& A% z3 u! {INPUTRC JAVA_HOME CLASSPATH RESIN_HOME</CCID_CODE></PRE></TD></TR></TABLE></CCID_NOBR>
2 m" j4 [/ \+ S6 z" V
+ Q$ O9 v# m7 [+ ?: a+ l最后,在终端上输入Java看能不能找到这个命令,如果能找到安装就成功了。 ! ?2 f2 j8 Y7 A& W. a' S( R5 g

, I! ~% N; c3 n& j, r下面介绍一下JDK的几个重要的命令: + T% B+ {/ G7 d, h. ]

: ]+ Z# T+ _0 A. _" K; @◆Java执行工具,是启动JVM(虚拟机)并执行class(BYTE CODE)文件的命令;
: `* @( J7 e% ?' Q5 v
6 x7 L% _6 X8 ]# H◆javac 编译器,由.java文件生成.class文件; 1 w; D* u. g# p& H9 u
# F3 P) F+ Z4 b6 m. z( ^" _
◆jar Java压缩打包工具; 1 s) @% r1 W0 f3 z4 f5 k
0 x1 w! I: O3 B0 {2 m3 m
◆Javadoc 文档生成器。 8 L  X# d0 F' X8 G

1 Q7 u# A3 o. ?% M4 }9 m" ^最后就是JDK Documentation,这是JDK的联机帮助文档,是最有用和最重要的学习参考文档,应该多看。 2 h# S! Q, t/ N6 A: n# ?

1 Q, W$ |0 W. X6 [, a5 m! ?, X( {- w
<CENTER><FONT color=#000099><b>开始写自己的代码</b></FONT></CENTER>1 W. D1 c2 S, x- \! h

6 A4 c* I' U/ S; ^; _4 g现在环境有了,应该写个简单的代码进行测试了。还是从经典的“hello word”开始。
# t  L: o2 z1 O! @% c4 Z" T: L. l7 ^# _8 i" Q3 Q: U4 w
<B>1. 先用编辑器写一代码(我用的是Linux的vi):</B>
5 Y9 n' }$ Q3 U. V
; |; Y4 \# `+ m<CCID_NOBR>
+ p' Y. o! L" @. D  a* H8 d$ p<TABLE align=center border=1 borderColorDark=#ffffff borderColorLight=black cellPadding=2 cellSpacing=0 width=550>: I; l$ }' Q6 ^

! L3 c7 {, w4 i! N; ]/ K; A<TR>6 H9 e6 Q- C: U1 J7 O7 \
<TD bgColor=#e6e6e6 class=code><RE><CCID_CODE>[stone@coremsg work]$ vi Hello.Java: H7 `& E" N) L$ S, M
  public class Hello{7 c! M% }8 N( q( ?8 \# P
        public static void main(String []argc){
" w0 R5 n+ s: J7 L$ `3 R                System.out.println("Hello Word!");
2 l) c0 v- o# N3 d' Y        }8 X9 Z1 `0 v: b* G! ]
  }</CCID_CODE></PRE></TD></TR></TABLE></CCID_NOBR>! h9 c7 S1 J2 K
0 \. P5 a" E+ \& q; r: C
<B>2. 编译:</B>
. r8 N4 {# e. i5 d0 N& o! b: s) E! y
+ z. C! j* q$ P" v9 W" H  l; P0 b<CCID_NOBR>* O; C& v8 V8 M/ e. H$ D
<TABLE align=center border=1 borderColorDark=#ffffff borderColorLight=black cellPadding=2 cellSpacing=0 width=550>& A8 O  `, X4 J* {% n% \# Z, E4 |
$ D# _& g' L  j3 u7 C
<TR>/ |" e. G1 L9 j. k
<TD bgColor=#e6e6e6 class=code><RE><CCID_CODE>[stone@coremsg work]$ Javac Hello.Java</CCID_CODE></PRE></TD></TR></TABLE></CCID_NOBR>% I$ F+ C- @, n+ A0 ]
# o  _. t) V; x- e7 I& n
<B>3. 执行:</B>
5 U+ U/ D( M3 R
2 E( v( b7 c4 z5 r/ x+ H<CCID_NOBR>
' a& F2 E& G. p* e<TABLE align=center border=1 borderColorDark=#ffffff borderColorLight=black cellPadding=2 cellSpacing=0 width=550>2 ~* {! G6 v# f* m, E, j2 G2 ?' i

  n6 W. k$ T* c/ \<TR>
2 |8 m/ `# `7 j0 {9 _. d<TD bgColor=#e6e6e6 class=code><RE><CCID_CODE>[stone@coremsg work]$ Java Hello) H& g: y4 t) h0 R" p
     Hello Word!</CCID_CODE></PRE></TD></TR></TABLE></CCID_NOBR>- E( B4 i! x# J. E4 B8 B! q

) |+ P- m4 w) R1 P- Z1 k成功了!这就是我的第一个Java程序。从那时起我知道已开始走进Java的世界,接下来就靠自己的努力了。在这个过程中,笔者认为有几点需要注意。 2 G" M) v; M. ?. U# W
* _$ L  V; X& [- V* Y+ S
学习一门新的语言,参考书是离不开的。我的建议是开始最好找一本篇幅较短的入门书来学习那些最简单、最基本的东西,包括学习Java语法等。同时,对一个最简单的程序也应该多去调试,多想想如果改动一下会出现什么结果?为什么必须那样写?多去想想这些问题然后去操作,会让你有更多的收获。这样反复地思考是很有用的。此外,在这一阶段还应该多看JDK的联机帮助,尽量多地掌握JDK提供的Java基本类库API。 5 M6 l3 }: u  N$ j
0 q; T6 n7 }+ y$ f( @# m7 T
在有一定基础、能够写一些简单的程序后,可以开始看《Thinking in Java》这本书。它比较完整地介绍了Java的语法、面向对象的特性、核心类库等。通过这一层次的学习能够加深对Java的理解和底层原理的运用,同时又可以完整地了解Java的整个体系。在这一阶段,应该重点学习Java的面向对象编程语言的特性,比如继承、构造器、抽象类、接口、方法的多态、重载、覆盖、Java的异常处理机制等,要对上述概念有非常清楚的了解。这样做的目的,是要让自己把这些技术应用到实践中进行合理的程序设计(比如,你会考虑一个类是用抽象还是接口来设计等)。这就要求必须在大量的实践中去应用和学习。这也是当初很多朋友给我的建议。
- N1 _5 @5 P6 P: j& X  [5 u' N; D
/ S& v. a& V) x$ P& n5 `2 t& _% c$ @2 Z7 M$ M) ?! ]2 E& B/ g
<CENTER><FONT color=#000099><b>学习更多</b></FONT></CENTER>
8 O! E6 c9 O2 t1 j$ w0 ~
+ K, Q8 r1 I3 b( Y+ J6 c, \如果要用Java来完成各种功能更强大的任务,那么就要学习语言以外的更多的东西。 % Z  ?2 O) P1 {

0 u' V- `% {& \<B>1.Java Web编程</B>
& T1 f$ d2 t8 L( [, _8 G( I
( Z+ d5 L9 F6 e9 ]- L4 }# U对于Java Web 编程来说,应该而且必须熟悉和掌握HTTP协议,可以参考 Stevens的《TCP/IP 详解》第三卷。Java Servlet技术提供了生成动态Web页面内容的能力,这在你的Java项目中是最基本的功能之一,所以必须学习。通过这一阶段的学习应该掌握Servlet/JSP的Web编程。
& ?0 x: v$ u6 u, i* ^. B/ P  Y
8 i0 O: ]2 z% t3 ~: ^5 @6 B<B>2. J2EE的学习</B> 8 _) g; d# G/ `  j. X, N: _

) W& F1 C! D. RJ2EE包含的技术太多了。如果你想坐在桌子旁边抱着一大堆书来学习的话,效果不大的。我建议在开始这一阶段的学习的时候,可以按以下步骤来做,总的思想是“总体把握,各个击破”。 & p3 V) i+ B" X7 D5 O

  K9 f9 O& {8 z) |) y% b◆ 了解J2EE中的技术术语的含义。
  T# t- Q0 V# {7 F- h' U0 @* }) J3 @$ d0 z8 C2 j- ^$ ?4 R2 a
我的感觉是J2EE标准中涉及到的各种技术很多,如果一开始就一个一个去学习的话是不现实的,也是没效果的。我的建议是,先对其中的技术有个大概的了解,比如EJB、JavaIDL、JTA等。可能你不知道怎么去写一个EJB,但是要知道什么是EJB、它能做什么,当有了这样的概念后,再去有目的地学习它就会快很多。我还要再重复一句——必须要在实践中动手去做才行。 ' M9 o# o- g2 K% x! h
% M( b3 s/ O4 K( V6 p
◆ 了解J2EE中的设计模式,这样能帮助你对J2EE做个整体把握。
' p% G& W! L; |. B3 b: |6 M  c2 B1 s& w2 j+ T
MVC开发模式被证明是有效的处理方法之一。它可以分离数据访问和数据表现。你可以开发一个有伸缩性的、便于扩展的控制器,来维护整个流程。通过这一层次的学习,当你面对一个项目的时候,应该首先把握它的总体架构的设计,以及决定采用J2EE标准中的哪些技术。 ) @9 m: A/ M: x1 t$ U4 W+ G  V
: m+ X& s# r2 i3 n$ J' k
◆ 了解一些J2EE平台的典型案列,加深对这一技术的概念和理解。
3 o& f' _/ g) v4 }; C% l
4 l  T4 @/ |5 [# P平时可以多留意这方面,熟悉一些典型案例,分析它为什么要采用那个时间?那样做能达到什么样的目的?然后联系到自己身边的项目是否可以作为参考。
* g$ w! E% x/ D6 l! z
/ b! R8 h( l! k8 C- n. _◆ 学习J2EE下的各种技术。
/ H/ m9 @3 A! Y$ C9 E' M- b" J" P& x- H1 {
在有了前几阶段的学习后,可以自己搭建一个J2EE平台开始具体学习每一种技术。你可以参与公司相关项目进行学习,也可以自己搭建一个平台进行学习。这时候应该找点相关的书来一步一步学习,没有捷径可走。如果你不满足于这些,那么还应该更深入地学习UML、设计模式等方面的东西。




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