数学建模社区-数学中国

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

作者: god    时间: 2005-3-31 01:33
标题: [转帖]初学Java注意什么?
本文选自:开放系统世界——赛迪网  2002年12月18日 4 m. G; W) u% [# O' d9 l- P' o
Java总有它的千般好处使你选择它,但这些随便翻翻书或在网上逛一圈就能找到答案。在本文中,笔者把自己学习Java的一些切身体会和过程写出来,供初学者做个参考。
- O3 ^  [6 f7 b7 w5 t" G* t6 D+ ]  N; U/ G# G$ d
我在学习Java的过程中主要围绕以下几个方面来学习: ( E! J+ Z* i# C5 p, Q
1 D4 P0 `* A9 {9 F3 ^) ]
1.时刻提醒自己Java是一种OOP语言工具,而不仅仅是编码,只有这样才能总体把握和运用Java。
! \# d0 M/ M6 M+ f7 R% V8 |3 X+ o7 v, F
2.在学习的过程中,最好能够了解Java的底层机制,而不是仅仅停留在表层,不是抄书上的例子运行出结果就可以。要注意,即便对一个简单的例子也要有耐心去琢磨、调试、改动。
9 g0 i7 C$ Z* e0 R; P; O( n" ~) H; }# a& v/ r' T
3.在学习的过程中一定要动手做、写代码,而不是抱一本书看看就行。很多东西和体会必须自己动手才能真正属于自己,最好能参与一些实际的项目。 4 ~: Z( ]/ U) m; ^8 E- G
$ \3 Y, ]6 h! h+ |
4.在学到一定阶段后,你开始希望用学过的东西做些什么。这时的你应该开始学习一些更多、更复杂的知识,比如J2EE平台的构建、EJB的开发等。对于这一部分,我建议最好找一本较薄的书先了解一个大概,心里有个总体的认识,对更多的技术术语做个初步掌握。我认为这个阶段看看《J2EE技术实践》很不错,它可以让你了解J2EE包含的各种技术和框架,同时提供很多实际的例子来加深对J2EE的整体了解。
9 i" s+ l6 ?3 x# @# o" S4 T5 d! @' H& W2 X* J7 M6 m
学习Java的兴趣和决心起了很关键的作用。在有了上述基础后,我便开始一步一步地学习Java。
% o! B- ?2 R* f  m6 K# b8 P" Y. R3 J+ v2 P
3 k+ P! m8 p3 r. V  Y" b
<CENTER><FONT color=#000099><b>Java环境的搭建</b></FONT></CENTER>
! h8 M0 f- I# P# ~- Z& o
. S, q: e' f. B  |7 L# `8 ~2 `要运行Java程序,必须安装JDK。JDK是整个Java的核心,其中包括了Java编译器、JVM、大量的Java工具以及Java基础API。
% s( N9 e2 d0 j: o+ J2 Z2 |4 w* W! j8 Y, ]' |6 e' v6 p( V7 S! h
可以从http://Java.sun.com下载JDK,有1.4版本和1.31版本。我的学习环境中首先,采用的是1.31版本。
; b# d( k% s% U" [, d5 Y. S( s! S) ~7 h$ D
解压安装。然后,进行环境设置。   E% k( R0 _+ {& q
5 \7 P/ R! z3 z( j! u
<B>1.对于Windows平台要进行以下设置:</B> - J' z  A1 P& R

  J! Y+ Y0 o: W" u1 m0 I. z; M<CCID_NOBR>: N6 Y  m1 C  I: }
<TABLE align=center border=1 borderColorDark=#ffffff borderColorLight=black cellPadding=2 cellSpacing=0 width=550>; o5 d3 s- a6 Y- b

; P" g7 S' Q+ v" ^<TR>
- m1 Y) Z6 [4 w& g; D: J" P  C+ y<TD bgColor=#e6e6e6 class=code><RE><CCID_CODE>set PATH=YOUR_INSTALL_ DIR\bin; C:\Windows;C:\Windows\Command5 a. k6 v% |" g( `
set classpath=. ;YOUR_INSTALL_DIR\lib\tools.jar</CCID_CODE></PRE></TD></TR></TABLE></CCID_NOBR>( R( z  e, C3 t
3 d0 Q! P% i3 j: ?) C% w: b+ n$ ]; w+ \
<B>2.对于Linux平台要编辑/etc/profile文件:</B> 0 }& d1 `7 x8 W

4 p+ U6 Z. n( l% [8 T9 }' `+ W<CCID_NOBR>/ H( K1 p$ `! a3 J$ M
<TABLE align=center border=1 borderColorDark=#ffffff borderColorLight=black cellPadding=2 cellSpacing=0 width=550>: A/ S9 q( h4 a9 c; I
3 D2 p3 L6 B8 J5 W7 G* a
<TR>5 P8 ]. y' b! K2 R( e  O
<TD bgColor=#e6e6e6 class=code><RE><CCID_CODE>JAVA_HOME=your_install_dir/JDK/j2sdk0 n* Z' ]  u& T4 i$ e5 ^
CLASSPATH=$JAVA_HOME/lib/tools.jarJAVA_HOME/lib/td.jarJAVA_HOME/jr  9 K9 y/ ^1 \; h
-e/lib/rt.jar:.
- h4 l; @/ s' U; Z9 WPATH=$PATHJAVA_HOME/bin! k8 `7 X3 g! [! ]4 M2 k; \8 P0 Z/ v
export PATH PS1 USER LOGNAME MAIL HOSTNAME HISTSIZE HISTFILESIZE   
. M' s: t# X- C( V7 W; zINPUTRC JAVA_HOME CLASSPATH RESIN_HOME</CCID_CODE></PRE></TD></TR></TABLE></CCID_NOBR>
. q  I5 f0 ]5 ~. I+ k0 ~6 z3 U/ v% j% K( S$ c8 t
最后,在终端上输入Java看能不能找到这个命令,如果能找到安装就成功了。
: R# m* \" `3 U) n5 m4 m
  y, ~6 N$ i2 y/ |, y下面介绍一下JDK的几个重要的命令:
+ b* c2 Q  p& X  B) B) O
+ W& x  |' Z/ V6 G, L" D. B# f2 f◆Java执行工具,是启动JVM(虚拟机)并执行class(BYTE CODE)文件的命令;
8 x/ v# Z& F/ _9 Q0 C
* k  q/ ]5 E3 s( D, Z2 j◆javac 编译器,由.java文件生成.class文件; 3 h" ^- h, e% E2 b

& G1 \! }0 z3 c2 B9 a* i◆jar Java压缩打包工具;
5 B& T$ l7 ?5 d$ ]9 v' P( s' W3 R' s: S. J
◆Javadoc 文档生成器。 9 m# z4 R( f6 d& X

0 T$ ~7 ~8 T, _: z最后就是JDK Documentation,这是JDK的联机帮助文档,是最有用和最重要的学习参考文档,应该多看。 & t* d* q' W! _
2 ~  \+ k0 Z. i: Q

! k3 q% e- X" l6 e<CENTER><FONT color=#000099><b>开始写自己的代码</b></FONT></CENTER>
; E/ j$ e6 T9 D" \# E  U2 n
$ _( O$ [* F% g8 p* T现在环境有了,应该写个简单的代码进行测试了。还是从经典的“hello word”开始。
. f+ j) \$ {- w2 H* @* D' `8 b5 `2 N2 e+ R! p  J- _" Z; B: S3 G
<B>1. 先用编辑器写一代码(我用的是Linux的vi):</B> 0 @! K7 W; u  ^: k1 D
! v* s& O- l5 D; o0 z% s* I
<CCID_NOBR>- \6 V8 s0 [8 p* \
<TABLE align=center border=1 borderColorDark=#ffffff borderColorLight=black cellPadding=2 cellSpacing=0 width=550>/ k! X. }9 g( r1 l# Y
( \2 k2 T5 r/ P+ P$ J  X+ t& w' ]
<TR>
+ S$ P; \! n  i, n/ Z5 U7 W4 J7 {<TD bgColor=#e6e6e6 class=code><RE><CCID_CODE>[stone@coremsg work]$ vi Hello.Java  {  z; x, y! u. Y2 A
  public class Hello{
; _7 e. C- `, C) A' w1 D        public static void main(String []argc){
; i' W* w8 i+ g) D2 I! s' ~( W                System.out.println("Hello Word!");
1 r/ s) v9 i3 t2 e; _2 z, s3 e1 s6 p7 ?        }. ]" A6 a. b6 a$ }/ O* g
  }</CCID_CODE></PRE></TD></TR></TABLE></CCID_NOBR>
9 p$ B, r/ K( `, W" b
5 q$ n+ `% T8 s7 L/ ^<B>2. 编译:</B> & [* X* r2 Z: k

" R* _% K4 e+ [! r5 u<CCID_NOBR>
" t- |  u, b( ?, q<TABLE align=center border=1 borderColorDark=#ffffff borderColorLight=black cellPadding=2 cellSpacing=0 width=550>
; \, r4 i8 z  \, m- o7 t% `
8 y' v* A0 |  ^" r1 x2 Y9 t# I<TR>% H2 l& W7 _* u  @' n2 s% e/ U) j
<TD bgColor=#e6e6e6 class=code><RE><CCID_CODE>[stone@coremsg work]$ Javac Hello.Java</CCID_CODE></PRE></TD></TR></TABLE></CCID_NOBR>
, R3 O& t1 Y" z. F+ d4 B, R/ h2 m% k: d! H# v# F
<B>3. 执行:</B>
# b- d' w+ N0 v1 u" |  N! f% R. K. i" O, B
<CCID_NOBR>
  P0 ], z% O: e+ K$ X. V- `<TABLE align=center border=1 borderColorDark=#ffffff borderColorLight=black cellPadding=2 cellSpacing=0 width=550>
$ c' m& ^1 x0 K; N; x* a# j
+ u- [# h: J8 u9 {1 l1 P/ O<TR>; Y: k: H  F7 R  r4 @
<TD bgColor=#e6e6e6 class=code><RE><CCID_CODE>[stone@coremsg work]$ Java Hello, n8 S+ D( u3 \
     Hello Word!</CCID_CODE></PRE></TD></TR></TABLE></CCID_NOBR>
9 x' s4 h& |# K- P# M
& k: {7 {. L3 c$ e成功了!这就是我的第一个Java程序。从那时起我知道已开始走进Java的世界,接下来就靠自己的努力了。在这个过程中,笔者认为有几点需要注意。
/ K* a2 U5 n. \4 u! v4 j" ~4 r6 O, _% g7 @7 P# e2 A
学习一门新的语言,参考书是离不开的。我的建议是开始最好找一本篇幅较短的入门书来学习那些最简单、最基本的东西,包括学习Java语法等。同时,对一个最简单的程序也应该多去调试,多想想如果改动一下会出现什么结果?为什么必须那样写?多去想想这些问题然后去操作,会让你有更多的收获。这样反复地思考是很有用的。此外,在这一阶段还应该多看JDK的联机帮助,尽量多地掌握JDK提供的Java基本类库API。
, t0 K) x5 T/ x! F6 ?  w1 ~! u+ f+ h8 d4 _8 Z
在有一定基础、能够写一些简单的程序后,可以开始看《Thinking in Java》这本书。它比较完整地介绍了Java的语法、面向对象的特性、核心类库等。通过这一层次的学习能够加深对Java的理解和底层原理的运用,同时又可以完整地了解Java的整个体系。在这一阶段,应该重点学习Java的面向对象编程语言的特性,比如继承、构造器、抽象类、接口、方法的多态、重载、覆盖、Java的异常处理机制等,要对上述概念有非常清楚的了解。这样做的目的,是要让自己把这些技术应用到实践中进行合理的程序设计(比如,你会考虑一个类是用抽象还是接口来设计等)。这就要求必须在大量的实践中去应用和学习。这也是当初很多朋友给我的建议。
8 C. c' J5 v# C% m: w: ~: e$ W, E5 H* v: D' ~
8 i$ I9 V- a; b0 N% b* W
<CENTER><FONT color=#000099><b>学习更多</b></FONT></CENTER>3 ^% X7 A' K" l' ^$ g1 B

7 c% M& ]8 z: `+ A- m如果要用Java来完成各种功能更强大的任务,那么就要学习语言以外的更多的东西。
2 K6 S8 d" R2 G  K% i0 Q% l" T8 \. t/ u" F
<B>1.Java Web编程</B> ; h. A/ j2 N& ?) N8 }1 w& j
% H" T0 Q! ~4 `
对于Java Web 编程来说,应该而且必须熟悉和掌握HTTP协议,可以参考 Stevens的《TCP/IP 详解》第三卷。Java Servlet技术提供了生成动态Web页面内容的能力,这在你的Java项目中是最基本的功能之一,所以必须学习。通过这一阶段的学习应该掌握Servlet/JSP的Web编程。 3 a; B' V) A7 c, k. d8 i
& O2 ]3 Q& L& V2 I6 O9 s( `) w
<B>2. J2EE的学习</B> , s" M+ G9 `+ F

9 ], u6 i  r1 Y  m. LJ2EE包含的技术太多了。如果你想坐在桌子旁边抱着一大堆书来学习的话,效果不大的。我建议在开始这一阶段的学习的时候,可以按以下步骤来做,总的思想是“总体把握,各个击破”。
3 s! n" W4 y( p. q  `5 X
! _( \2 W% z7 Z/ q2 i9 e6 N◆ 了解J2EE中的技术术语的含义。 8 L6 J) Q! e) o2 r% Z3 X7 O* m

. q  U$ W, k7 l* N+ H3 j& ^我的感觉是J2EE标准中涉及到的各种技术很多,如果一开始就一个一个去学习的话是不现实的,也是没效果的。我的建议是,先对其中的技术有个大概的了解,比如EJB、JavaIDL、JTA等。可能你不知道怎么去写一个EJB,但是要知道什么是EJB、它能做什么,当有了这样的概念后,再去有目的地学习它就会快很多。我还要再重复一句——必须要在实践中动手去做才行。 9 s; f/ H: P5 V2 X

/ Y7 P$ j: P( ]3 h◆ 了解J2EE中的设计模式,这样能帮助你对J2EE做个整体把握。 7 W9 u/ q& _7 R

9 K9 T7 c0 R7 P5 dMVC开发模式被证明是有效的处理方法之一。它可以分离数据访问和数据表现。你可以开发一个有伸缩性的、便于扩展的控制器,来维护整个流程。通过这一层次的学习,当你面对一个项目的时候,应该首先把握它的总体架构的设计,以及决定采用J2EE标准中的哪些技术。
, F; ~' L" \. P, \* A! V8 T
! |5 N5 f7 u4 J2 V◆ 了解一些J2EE平台的典型案列,加深对这一技术的概念和理解。 & C3 n' T: U3 e$ t6 p1 O& b  G

/ p! R# {# N* x0 j5 i% J+ B& c平时可以多留意这方面,熟悉一些典型案例,分析它为什么要采用那个时间?那样做能达到什么样的目的?然后联系到自己身边的项目是否可以作为参考。
; `4 X5 F' b6 |0 K/ T7 F& D6 D9 v- u1 r2 h% @
◆ 学习J2EE下的各种技术。 ) {- h0 _9 t4 N# }5 W

, \. z7 L0 C7 Z  D6 t& x% J在有了前几阶段的学习后,可以自己搭建一个J2EE平台开始具体学习每一种技术。你可以参与公司相关项目进行学习,也可以自己搭建一个平台进行学习。这时候应该找点相关的书来一步一步学习,没有捷径可走。如果你不满足于这些,那么还应该更深入地学习UML、设计模式等方面的东西。




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