社区应用 最新帖子 精华区 社区服务 会员列表 统计排行 社区论坛任务 迷你宠物
  • 6034阅读
  • 8回复

[JAVA]一个牛人给java初学者的建议

级别: 店掌柜
发帖
5692
铜板
103378
人品值
1520
贡献值
26
交易币
0
好评度
5373
信誉值
0
金币
0
所在楼道

[hide=2]一个牛人给java初学者的建议 b"j|Bb  
T1Ta?b  
*OTS'W~t  
给初学者之一:浅谈java及应用 o'V%EQ  
学java不知不觉也已经三年了 Q9?t[ir  
从不知java为何物到现在一个小小的j2ee项目经理 m7|RD]q&  
虽说不上此道高手,大概也算有点斤两了吧 ((3}LQ  
每次上网,泡bbs逛论坛,没少去java相关的版面 ^4$ 'KIq  
总体感觉初学者多,高手少,精通的更少 W?RE'QV8  
pa]"iZz  
由于我国高等教育制度教材陈旧,加上java自身发展不过十年左右的时间 #gbH^a'  
还有一个很重要的原因就是java这门语言更适合商业应用 2y GOzc  
所以高校里大部分博士老师们对此语言的了解甚至不比本科生多 i%{X9!*%TX  
在这种环境下,很多人对java感到茫然,不知所措,不懂java能做什么 .p6+l!"  
即便知道了java很有用,也不清楚该从哪里入手 f@V3\Z/6E  
所以就有了 java入门难 这一说法 a}nbo4jK  
Y:QD   
ok,那我们就从java到底能做什么聊起 -=}3j&,\R  
8g/F)~s^F  
先说什么是java V64L,u#`l  
Zm TDQ`Ix  
java是一种面向对象语言,真正的面向对象,任何函数和变量都以类(class)封装起来 ^y_fRP~  
至于什么是对象什么是类,我就不废话了 `sHuM*  
关于这两个概念的解释任何一本面向对象语言的教材里面都有 +V(5w`qx  
知道了什么是java,那自然就会对java能干什么感兴趣 JhK/']R  
)9j06(<A  
在说java能做什么之前,先说java作为一个真正面向对象语言的优点 -pb&-@Hul  
首先第一个,既然是真正的面向对象,那就要做到彻底的封装 %!j:fJ()  
这是java和c++最大的不同,java所有的源码以及编译后的文件都以类的形式存在 #;tT8[Ewuw  
java没有所谓的类外部定义,所有的函数(方法)以及变量(属性)都必须在类内部定义 woOy*)@  
这样就不会出现一个类被切割成这里一块那里一块的情况,c++就可以,不是么? z4U9n'{  
这样做使得整个程序的结构异常清晰,明了 %}Q&1P=  
M#jN-ix  
其次第二个,最让人欢呼雀跃的是完全屏蔽了指针,同时引入了垃圾回收机制 ">jwh.  
任何一个写过c/c++代码的人,都会对内存管理深恶痛绝 %Kb9tHg  
因为这使得我们不能把主要精力放在我们关心的事情上 L\aBc}  
而需要考虑计算机内部的一些事情,作为一个软件工程师 v:_B kHN'  
[/hide]
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水

简单生活
执著追求
别笑我浅溥,天真的以为用一腔真诚就能感动这个冷漠的世界。
也别说我幼稚,竟想用不长的人生去诠释繁杂的红尘。
然而除了真诚,我还能给你什么,的确我真的一无所有!

发帖
27
铜板
29
人品值
21
贡献值
0
交易币
0
好评度
27
信誉值
0
金币
0
所在楼道
学一楼
只看该作者 8 发表于: 2010-10-28
J2EE初学者需要注意的问题
r64u31.)  
(Ye>Cp+]  
J2EE初学者需要注意的问题 jx`QB')kX  
  体系结构简单介绍 3K0tC=  
  一、J2EE提出的背景 `iShJz96  
  1、 企业级应用框架的需求 JC;^--0(z  
u' Qd,  
  在许多企业级应用中,例如数据库连接、邮件服务、事务处理等都是一些通用企业需求模块,这些模块如果每次再开发中都由开发人员来完成的话,将会造成开发周期长和代码可靠性差等问题。于是许多大公司开发了自己的通用模块服务。这些服务性的软件系列统称为中间件。 U yqXMbw@  
  2、 为了通用必须要提出规范,不然无法达到通用 B5am1y{P#  
  在上面的需求基础之上,许多公司都开发了自己的中间件,但其与用户的沟通都各有不同,从而导致用户无法将各个公司不同的中间件组装在一块为自己服务。从而产生瓶颈。于是提出标准的概念。其实J2EE就是基于JAVA技术的一系列标准。 .V'V:;BE%  
  注:中间件的解释 中间件处在操作系统和更高一级应用程序之间。它充当的功能是:将应用程序运行环境与操作系统隔离,从而实现应用程序开发者不必为更多系统问题忧虑,而直接关注该应用程序在解决问题上的能力 。我们后面说到的容器的概念就是中间件的一种。 A7XnHPIw  
  二、相关名词解释 QDmYSY$  
  容器:充当中间件的角色 #=e;?w  
  WEB容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接与容器中的环境变量接口交互,不必关注其它系统问题。主要由WEB服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。该容器提供的接口严格遵守J2EE规范中的WEB APPLICATION 标准。我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。 JqUADm  
  容器:Enterprise java bean 容器。更具有行业领域特色。他提供给运行在其中的组件EJB各种管理功能。只要满足J2EE规范的EJB放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。例如邮件服务、事务管理。 !^fa.I'mM  
  WEB容器和EJB容器在原理上是大体相同的,更多的区别是被隔离的外界环境。WEB容器更多的是跟基于HTTP的请求打交道。而EJB容器不是。它是更多的跟数据库、其它服务打交道。但他们都是把与外界的交互实现从而减轻应用程序的负担。例如SERVLET不用关心HTTP的细节,直接引用环境变量session,request,response就行、EJB不用关心数据库连接速度、各种事务控制,直接由容器来完成。 E_ucab-Fi  
  RMI/IIOP:远程方法调用internet对象请求中介协议,他们主要用于通过远程调用服务。例如,远程有一台计算机上运行一个程序,它提供股票分析服务,我们可以在本地计算机上实现对其直接调用。当然这是要通过一定的规范才能在异构的系统之间进行通信。RMI是JAVA特有的。 |Rzy8j*  
  JNDI:JAVA命名目录服务。主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。 vP-M,4c  
  JMS:JAVA消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播。 2(YPz|~W  
  JAVAMAIL:JAVA邮件服务。提供邮件的存储、传输功能。他是编程中实现邮件功能的核心。相当MS中的EXCHANGE开发包。 rw%l*xgX  
  JTA:JAVA事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。 !$qKb_#nC  
  JAF:JAVA安全认证框架。提供一些安全控制方面的框架。让开发者通过各种部署和自定义实现自己的个性安全控制策略。 |FR3w0o  
  EAI:企业应用集成。是一种概念,从而牵涉到好多技术。J2EE技术是一种很好的集成实现。 Ju` [m  
  三、J2EE的优越性 kAzd8nJ'  
  1、 基于JAVA 技术,平台无关性表现突出 T)CzK<LbR  
  2、 开放的标准,许多大型公司已经实现了对该规范支持的应用服务器。如BEA,IBM,ORACLE等。 ^(x^6d  
  3、 提供相当专业的通用软件服务。 <I*x0BM=  
  4、 提供了一个优秀的企业级应用程序框架,对快速高质量开发打下基础 Q}AE.Ef@<  
  四、现状 x2VBm$>  
  J2EE是由SUN 公司开发的一套企业级应用规范。现在最高版本是1.6。支持J2EE的应用服务器有IBM WEBSPHERE APPLICATION SERVER,BEA WEBLOGIC SERVER,JBOSS,ORACLE APPLICATION SERVER,SUN ONE APPLICATION SERVER 等。 ctmQWrk|B  
更多免费技术文章和技术讲座视频请参考www.ascenttech.cn u62)QJE  
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 7 发表于: 2007-09-08
不错读了读  挺好的 good
级别: 店掌柜
发帖
5692
铜板
103378
人品值
1520
贡献值
26
交易币
0
好评度
5373
信誉值
0
金币
0
所在楼道

只看该作者 6 发表于: 2007-09-03
这个是全部的
附件: 牛人如何学习JAVA.rar (121 K) 下载次数:0 ,该附件已加密,拥有20才能下载

简单生活
执著追求
别笑我浅溥,天真的以为用一腔真诚就能感动这个冷漠的世界。
也别说我幼稚,竟想用不长的人生去诠释繁杂的红尘。
然而除了真诚,我还能给你什么,的确我真的一无所有!

级别: 店掌柜
发帖
5692
铜板
103378
人品值
1520
贡献值
26
交易币
0
好评度
5373
信誉值
0
金币
0
所在楼道

只看该作者 5 发表于: 2007-09-03
[hide=3]趋势二: > dZ3+f  
傻数据库,ok,首先,我承认,这个名词是我发明的,但我实在无法找到一个更好的表达 Tt# bg1  
什么是傻数据库,如果谁对数据库有所了解的话,就知道,以前的数据库 ;I6s-moq_  
有自己的一套管理体系,甚至有自己的客户端,比如oracle,mysql,sqlserver都有 A/*%J74v  
在某个管理工具上写什么sql语句查询数据库是我们以前常做的事 %"3 )TN4  
那么将来我们提倡的是:将所有的业务逻辑封装到业务逻辑层去 ~fN%WZ;_  
管理的事情由软件来做,由业务逻辑层的软件来做 UV7%4xM5v  
所谓傻数据库就是说,将来的数据库什么事都不用做 PK6iY7Qp)  
只用把数据给我保存好就行了,那些复杂的业务逻辑什么外键什么关联 #} ,x @]p  
都没数据库什么事了,都交给业务逻辑层软件来做 ~XM[>M\qB  
这样做的好处就是:我们就不需要这些该死难懂又复杂的数据库系列管理工具了 nn~YK  
而且这些工具每个数据库都有自己的工具,完全不一样,乱七八糟,没有人喜欢面对他们 B;zt#H4  
除了数据库维护人员,也就是DBA,我们是软件工程师,维护的事让他们去做 - Xupq/[,  
而且严禁数据库维护人员改动数据库的数据,他们只做备份,必要时候恢复一下就是了 N0TeqOi4Y  
Ibr%d2yS=  
了解了这两个趋势之后,是不是有种砍头去尾保中间的感觉? 8Cf|*C+_'  
没错,未来的趋势就是中间件时代,中间件工程师将是未来计算机应用的主流 "l~Ci7& !a  
那再次统一一下概念,什么是中间件? ]Tp U"JD  
记得我上学的时候,看ibm的教材,看了半天中间件定义,就看懂记住一句话 f|3q^wjs  
中间件是做别人不愿意去做的事情,现在想想,狗屁定义,呵呵 N_wp{4 0/  
什么是中间件,中间件是业务逻辑层的应用软件 ks(SjEF  
是处理业务数据与客户端之间业务逻辑的一种应用软件 Ws[D{dS/  
一种提供网络服务的服务器端应用软件 a=}*mF[ug  
举个非常简单的例子,网上银行,某个人想用IE进入工行的账户,然后转帐 wGKo.lt   
在这个例子中,客户端表示层显然是IE,数据持久层显然是银行的核心数据库 +=@^i'  
那么中间件是什么?中间件就是提供这种服务的系统 '"YYj$> '  
7v~j=Z>  
这三层的划分如下 'VnwG  
------------------------------ Ggm` ~fS  
|表示层 | 业务逻辑层 | 数据持久层 | -$8.3\6h  
------------------------------ XJ\hd,R   
|  IE  |  网上银行  |  数据库  | 3fS}:!sQ  
------------------------------ mX# "+X|  
6Z:YT&,f  
C0 ) Z6  
[/hide]

简单生活
执著追求
别笑我浅溥,天真的以为用一腔真诚就能感动这个冷漠的世界。
也别说我幼稚,竟想用不长的人生去诠释繁杂的红尘。
然而除了真诚,我还能给你什么,的确我真的一无所有!

级别: 店掌柜
发帖
5692
铜板
103378
人品值
1520
贡献值
26
交易币
0
好评度
5373
信誉值
0
金币
0
所在楼道

只看该作者 4 发表于: 2007-09-03
[hide=2]给初学者之四:java企业级应用之软件篇 *:"^[Ckc  
嗯,说过了硬件就该是软件了 bY8GA  
这篇是这个系列的重中之重 M?&zY "c  
Buc_9Kzw<+  
首先我们来说说什么是软件,统一一下概念 19u =W(  
oVO.@M#  
所谓软件通俗地说就是一套计算机程序 lu\o`m5wF  
实现了某些功能的计算机程序 Iin#Wd-/  
在很早很早以前,一台计算机的软件是不分层次结构的 b{[*N  
一台计算机只有一个系统,这个系统既是操作系统又是应用软件,与硬件紧密绑定 U@lV  
后来经过许多年的发展发展发展 yyl#{Nl@t  
人们把一些与硬件紧密相连的又经常用到必不可少的功能做到一套程序中去 W Ox_y,  
这一套程序就被人们称做操作系统  @|A|  
另外一些可有可无的,不同工作适应不同环境的功能封装到另外一套程序中去 khX|" d360  
而这一系列程序被人们称作应用软件 2: ^njqX  
如下图: ? Nj)6_&  
------------------------------------------- ^$?qT60%d|  
|应用软件:falshgat/IE/realplayer/winamp..| APBK9ky  
------------------------------------------- Lk, +Tfk"  
|操作系统:UNIX/Windows/Linux/Solaris...  | MgJ5B(c  
------------------------------------------- ]#eh&jw  
前一篇我们知道,硬件分为服务器工作站与pc 7Ua7A  
其实无论哪种硬件的软件,都有操作系统与应用软件 CY"i-e"q<Q  
gQVBA %  
ok,那下面我们来谈应用软件 e1(h</MU2  
在现在企业级应用中,我们的应用软件一般分为三层 RXSf,O  
三层分别是表示层,业务逻辑层,数据持久层 n~r 9!m$<  
------------------------------ wq0aF"k  
|表示层|业务逻辑层|数据持久层| bH9Le  
------------------------------ 6].:.b\qQc  
我们来说说三层中的代表软件 XAic9SNu;  
表示层 Eu<r$6Q0}o  
这一层一般在客户端pc机上,最常见的是IE浏览器,这就是表示层的软件 {w 5Z7s0  
表示层是直接与使用者交互的软件 vgG}d8MW37  
业务逻辑层 ;)/@Xx  
这一层一般在服务器端,顾名思义,所有业务逻辑处理都在这一层完成 J\`^:tcG  
最典型的是appserver,比如IBM的websphere,BEA的weblogic还有tomcat/jboss等 V'wi^gq  
这一层也是三层中的重点,我们要说的大部分内容都是关于这一层的,这个等会再说 K&`Awv  
这一层就叫做中间层 wK5_t[[  
数据持久层 }[=YU%[o:  
这一层典型的就是数据库,一般也在服务器端 \ aKd5@  
但该服务器一般与装业务逻辑层软件的服务器分开 ?S`>>^  
当然你也可以用IO输入输出流往硬盘上写东西 iD_T P  
但没人会建议你这么做,因为这样做你的数据缺乏管理,不管怎样 NB)t7/Us  
这一层要做的就是保存数据,业务逻辑层软件一般不负责保留数据 F? ]N8W  
或者说业务逻辑层只负责暂时储存数据,一关机,业务逻辑层数据全部over了 DdjCn`jqlf  
那么数据的持久化(也就是储存数据)就必须要在这一层完成 2<6j1D^jM  
Z7#7N wy4  
下面放着这些概念不谈,我们来说说将来的趋势 BQrL7y  
趋势一: o}D![/  
瘦客户端,很早很早以前,当时C/S模式也就是client/server *@M3p}',M  
客户端软件大行其道的年代,一个pc用户,是采用一个傻终端连接到服务器上 %J P!{mqj  
然后进行相应的操作,最典型的就是我们上bbs经常用的c-term 3'#%c>_  
这就是那个时代的产物,同样还有我国现行的机票定座用的e-term 8 njuDl  
后来呢,浏览器变得非常流行,人们发现,浏览器也能传递一些数据 X#J6Umutm  
虽然这些数据并不像那些终端那样准确,但应付大多数日常需求足够了 L(o#4YH}>J  
于是人们就提出一个瘦客户端概念,也就是说,将来表示层所有的其他软件疾挥? (cV  
我们唯一需要的就是一个网页浏览器,然后通过浏览器输入ip地址连接到服务器 bx;f`8SN  
然后进行相关的操作,由于网页浏览器一般每个操作系统都有自带一个 qu{mqkfN>  
这样做就达到了给我们客户端瘦身的目的(不需要安装额外软件) {*xBm#  
这样模式被称作B/S模式,也就是browser/server模式 ejcwg*i  
但需要指出的是,虽然瘦客户端是趋势,但并不代表胖客户端没有市场 ~ =.CTm]vf  
尤其是一些复杂的业务操作,还是浏览器这种简单软件无法胜任的 (2txM"Dja  
rK=6]j(K  
[/hide]

简单生活
执著追求
别笑我浅溥,天真的以为用一腔真诚就能感动这个冷漠的世界。
也别说我幼稚,竟想用不长的人生去诠释繁杂的红尘。
然而除了真诚,我还能给你什么,的确我真的一无所有!

级别: 店掌柜
发帖
5692
铜板
103378
人品值
1520
贡献值
26
交易币
0
好评度
5373
信誉值
0
金币
0
所在楼道

只看该作者 3 发表于: 2007-09-03
[hide=2]用通俗点话说??衿骶褪悄掣龉??4小时不间断运行提供服务的机器 " i`8l.Lc  
比如卖飞机票(中航信),比如酒店预定(携程) %zljH"F  
比如提供门户站点相关服务(sina),比如电子商务(ebay,amazon,阿里巴巴) 2%YXc|gGT  
这些服务对机器都有一些特定的要求,尤其强调安全和稳定 U$J5r+>  
I:&# U$  
工作站(workstation) $c =&0yt5  
工作站其实是图形工作站的简称,说白了,就是某种功能极其强大的计算机 oyvtZ/@  
用于特定领域,比如工程设计,动画制作,科学研究等 mxL;;-  
TzF0/T!  
个人电脑/微机(pc) *.8:'F  
计算机网络的最末端,这个应该不用我说太多了 P(_(w 9  
网络时代的pc已经普及到千家万户 qS]G&l6QF  
(#u{ U=  
说完了分类,我们就来说说各个硬件供应商 }tR'Hz2  
首先是服务器还有工作站 qJ Gm8^b-  
这两类硬件供应商主要是以下三家 # #>a&,  
Sun,IBM还有HP(惠普) :~-i&KNk  
Xw(3j)xQ  
然后是PC 2f{kBD  
以前IBM还有PC事业部,现在被联想吞并了(蛇吞象) <7RfBR.9  
现在国际市场上有联想和DELL(戴尔),目前戴尔还是国际老大 <.$,`m,  
还有HP康柏 ;,`]O!G:P  
s`vSt* ]K  
然后是网络,也就是路由器和交换机 B$7[8h  
这块市场嘛,Cisco(思科)Brocade(博科)还有McDATA三足鼎立 ZKQo#!}  
e6m1NH4,  
内核(CPU) f\'G`4e  
PC内核 `.8-cz  
主要是AMD和Intel,前者最近与Sun公司合作,Sun也有一部分单双核服务器用的是AMD的 PP4d?+;V  
服务器与工作站内核 5"2@NL  
这一块与硬件厂商绑定 ,.7vBt6 p  
还是Sun,IBM,HP三家自己生产 !E0fGh  
=ZMF]|  
题外 )52#:27F  
在一些大型主机应用市场,比如卖飞机票 )@$ &FFIu  
德国的汉莎,中国的中航信,香港的国泰用的都是尤利(美国的公司,英文名我忘了) *1,=qRjL  
其它用的是IBM的机器,现在能做大型机的感觉似乎只有IBM可以 )0F^NU  
尤利已经快倒了,技术太落后了,现在他们的系统还是fortran写的,连c都不支持 RAOKZ~`  
lko3]A3  
要特别说明的是,一个超大型主机然后多个小终端/pc的结构现在越来越没市场了 6o(lObfo  
将来的趋势是用一整个包含多个服务器的分布式操作系统来取代这些大型主机 o16~l]Z|f  
因为大型主机更新换代极其困难,一旦数据量超过了主机的处理能力 sH@  &*  
那么就要换主机,这个成本是极大的,但是如果用分布式操作系统 Cqa3n[Mhw1  
那就只需要增加小服务器就行了 X|)Il8  
B$`d&7I;D  
硬件就大概说到这里,与大多数人没什么关系 kaC+I"4c  
因为大多数人压根不可能进入这些硬件领域,除非做销售 B[7A  
说了这么多,只是为了给软件部分打基础而已 FvA|1c  
//做嵌入式的除外 @7X\tV.Z  
[/hide]

简单生活
执著追求
别笑我浅溥,天真的以为用一腔真诚就能感动这个冷漠的世界。
也别说我幼稚,竟想用不长的人生去诠释繁杂的红尘。
然而除了真诚,我还能给你什么,的确我真的一无所有!

级别: 店掌柜
发帖
5692
铜板
103378
人品值
1520
贡献值
26
交易币
0
好评度
5373
信誉值
0
金币
0
所在楼道

只看该作者 2 发表于: 2007-09-03
给初学者之二:从JDK说起 i8eA_Q  
在知道了java有什么优点,能做什么之后 T7s+9CE  
就该说一下java该如何去学了 2_I+mQ  
,i;9[4QMX  
在说java如何去学之前,有必要把java的几个大方向做一个简单说明 o[imNy~~  
早在五年前,嗯,应该说是六年前,也就是99年的时候 4V>vg2 d  
sun公司做出了一个决定,将java应用平台做一个划分 *NF&Y  
毕竟在不同领域,语言应用特性是有区别的 GJ>ypEWo  
针对不同领域内的应用,sun公司可以发布相关高端标准来统一规范代码 l`qP~ k#  
这三大块就是J2SE,J2EE以及J2ME vhX-Qkt}  
这个举措今天看来无疑是非常了不起的 1"d\ mE  
正是由于这次革命性的发展,使java从一种小打小闹游戏性的语言 +>^[W~[2  
发展成为今天企业级应用的基础 xpz`))w  
qs "s/$  
这里要特别说明一下J2SE J2EE J2ME中2的意思 E s:5yX!  
其实2就是英文单词to的谐音,就是to的意思 ~Ji>[#W K  
而不是second edition,当然java 2本身版本号就是1.2,也有点2nd edition的味道 fGG 9zB6  
@21u I{  
说点题外的,sun公司发布的java版本很有意思 L*IU0Jy>  
虽然总是写是1.X但其实外界对这种版的说法也就是X.0 %Au T8  
比如java 2,其实就是java 1.2 nE^wxtY  
1.3其实就是3.0,1.4就是4.0,现在所说的5.0 其实就是1.5 \Qp}|n1JY  
只是以前我们更习惯叫1.X而已 4t*<+H%  
可能到了5.0以后,就全改叫X.0而不是1.X了 sq48#5Tc^r  
所以以后听到别人说java 5.0,千万别惊讶,其实就是1.5 iPz1eUj  
R'r|E_  
在这三个J2*E中J2SE是基础,就是java 2的标准版(java 2 standard edition) R rxRa[{Z  
也就是最基础的java语言部分,无论学什么java技术,J2SE都是必须掌握的 C~:b*X   
要使用J2SE就必须安装JDK(java development kit) 7Z VVR*n|  
JDK在sun公司的主页上可以免费下载,下载后需要安装,具体安装流程看教材 Px$'(eMj^3  
JDK包含有五个部分:核心API,集成API,用户界面API,发布技术还有java虚拟机(JVM) *:(1K%g  
M$#+W?m&  
先说运行环境,运行环境最主要要说的就是java虚拟机(JVM) 01-p `H+  
前面我们说过java是跨平台的语言,那么如何做到跨平台呢?毕竟每种操作系统都是不同的 ?3n=m%W,J*  
java的设计者们提出了一个虚拟机的概念 e5FCqNip'  
在操作系统之上建立一个统一的平台,这个平台必须实现某些功能以支持程序的运行 2,+@# q  
如下图: rdFs?hO  
------------------------------------- pDP33`OFh  
|            program              | 8R&z3k;!t  
------------------------------------- XpOCQyFnM  
|                JVM                | ~;TV74~rr  
------------------------------------- E8+8{ #f;  
| UNIX | Windows | Linux | Solaris |.. i4 P$wlO  
------------------------------------- =SA 4\/  
程序员所写的每一个程序都先运行在虚拟机上 Bk@bN~B4  
所有操作都必须经过虚拟机才能和操作系统交互 20n%o&kG]8  
这样做不仅统一了所有操作系统,同时也保证了操作系统的安全 oUCS |  
要死机的话,死的是虚拟机(JVM)而操作系统并不会受此影响 sek6+#|=  
而我们所说的java运行环境指的主要是JVM,其他的不说了,省略 HH+TjX/b  
Qb@BV&^y&  
下面说说JDK(java development kit)的API,其实用JDK来包括运行环境以及开发工具 d"z *Nb  
个人感觉是不恰当的,因为这三个单词仅能说明开发工具,也就是几个标准的API LZbRQ"!!o  
而没有让人感觉到有运行环境的意思在里面,这是题外 gq=0L:  
那么什么是API? NT'Ie]|  
简单地说就是Application Programming Interface,应用程序编程接口 Dy98[cL  
在java里面,就是一些已经写好了的类打成的包 \]Kq(k[p  
这又要解释什么是类什么是包了,简单说一下,包就是类的集合 b$IY2W<Ln  
一个包包含零个或多个类,嗯,具体的可以去看书 UnJi& ~O  
这些类是java的基础类,常用的类,可以简单理解成java的工具集 -v;iMEZ)  
//VG1@vaVX  
最后说一下JDK的发布技术,其实按我的理解,讲白了就是编译器 LPsh?Ca?N  
将.java文件转换成.class文件的一种技术 %L.lkRs  
这三部分组成了JDK,有了JDK,就可以开发出J2SE应用软件了 _P>1`IR  
最原始的只要用一个记事本写几行代码就可以了 :p,c%"8  
但一般来说我们会使用效果比较好的开发工具,也就是IDE $hC~af6  
在J2SE这一块,特别推荐JCreator这款IDE AsV8k _qZL  
sun公司的产品,与JDK结合得几乎是天衣无缝,非常适合初学者使用 GcPB'`!M  
L!`*R)I45  
教材方面中文的推荐电子工业出版社出版的《java教程》初级与高级篇各一本 0m qS A  
还有就是《21天学通java》虽然有人说21天系列是烂书,但个人感觉 jY1^+y{  
对于j2se,这本书翻译得已经很不错了,基本没有什么语法错误,语句也很通顺 R/yPZO-U  
最后要说的就是《thinking in java》 (M4]#5  
这本书自然很经典,说得比较细,只是我觉得不太适合初学者,其实也不难 R65;oJh  
初学者直接看也不成问题,但个人感觉还是找本教材也就是前面推荐的两款来看比较好 )tJL@Qo  
基本概念的理解还是用教材的,毕竟thinking in java有的版本翻译得很烂 77)OW $G  
而且个人建议还是看原版比较好,当然这几本都看最好了,但如果没时间 3xc:Y> *`  
至少精读其中一本,然后再看其他两本就可以,其实三本书内容也差不多 0^-z?Kb<}  
但看问题的角度方式以及面向的读者也都不同,嗯,怎么说呢,找适合自己的吧 mm3zQ!2j.  
最后要说的是 }Ox2olUX  
由于虚拟机的存在,J2SE的大多数软件的使用会比一般桌面软件慢一些 Z`e$~n(Bh  
效果不尽如人意,现在大概只有swing控件还在使用吧,其它没怎么听说 AEBw#v!,o  
*9\oD~2Y  
J2EE&J2ME #1gTpb+t  
这是java应用的重中之重,如果想拿高薪,最好把J2EE学好 9 ?EY.}~  
记得以前在csdn上看过一个调查,月薪上万的程序员主要从事哪方面的工作 bfcD5:q  
十个中有八个是做J2EE的,其他两个一个做J2ME,还有一个做嵌入式 PGC07U:B  
也许有些夸张,但也从某一方面说明J2EE人才的稀缺以及应用的广泛 <!$j9)~x  
所以如果想学java,只精通j2se是永远不够的,至少还需要时间去了解其它两个J2*E 0]f?Dx/8  
{6REfY c  
给初学者之三:java企业级应用之硬件篇 @`#OC#  
总算讲到企业级应用了,内容开始逐渐有趣起来 P1M|f4*  
+:j4G^V  
java企业级应用分为硬件篇和软件篇 GA({ri  
重点在软件,硬件是外延,严格地说与java没有必然联系 0b!fWS?,k0  
但是,由于java是网络语言,不了解硬件的一些基础知识 \Qe'?LRu{  
软件知道再多也没什么用,不要上了战场还不知道为什么而打仗 x'VeL|  
硬件是软件的基础,在这个前提下,有必要专门花一点点篇幅来聊一下硬件 r%O rH-T  
W+fkWq7`Xx  
硬件,简单地说就是我们实际生活中看得见摸得着的东西 zW|$x<M^  
也就是那些冰冷的机器,比如服务器,个人电脑还有网络交换机,路由器等等 LA(f]Xmc  
XyN`BDFi  
那么先抛开网络设备不谈,先来说说计算机电脑的历史 yTMGISX5  
cx,u2~43A&  
在很早很早以前,人类创造了第一台电脑,那时候的电脑只是一台用来计算的机器 ,i1fv "  
无比大,无比重,无比傻,除了算其它屁事不会做,没有所谓的人工智能与计算机网络 9 ayH:;  
但是总算是诞生了,虽然以今天的眼光去看那时候的机器巨傻无比 O% j,:t'"  
只配叫做计算器而不是电脑,没有逻辑思维能力,只会死算 So3,Z'z=  
但千里之行,始于足下,反正是造出来了 D| 3AjzW  
lk5_s@V l  
然后随着时间的推移,制造业发展发展发展 $\=6."R5<  
电脑性能逐渐得到提升,速度快了起来,成本也逐渐低了下来 w+:+r/!g  
于是人们造出了第二台,第三台,第四台,第五台……第n台计算机 #)Id J]  
人们就造出了无数台计算机并使其成为一种产品 f?oI'5R41  
逐渐应用于许多复杂计算领域,不仅仅是科研,许多生产领域也开始出现计算机的影子 L>|A6S#y8/  
fh/)di  
然后又随着时间的推移,人们发现不可能把所有的计算机都做成一个样子 wFH(.E0@Q  
因为各行各业对计算机性能的要求各不相同 XmE_F  
于是开始把计算机划分档次,最简单地是按照计算机的大小划分 nJnO/~|  
就是教科书上写的大型机,中型机,小型机 *GY,h$Ul  
//个人感觉这样分纯粹扯淡,还以为是小孩子玩球,分为大球,中球和小球 ^^W`Lh%9  
但是不管怎样,计算机不再是千篇一律一个样子了 dW] Ej"W  
按照性能的不同,在不同领域,出现了满足符合不同要求的计算机 "'LOaf$X  
tFb|y+  
几乎在同时,人们也开始考虑计算机之间通讯问题 `0/gs  
人们开始考虑将不同的计算机连接起来,于是网线出现了,网络出现了 c;A ew!  
又随着网络的发展,出现了一下专门为了寻址而存在的机器 0:nt#n~_  
这就是路由器和交换机,然后又出现了一些公益性的组织或团体 u!156X?[eU  
他们制定了一系列的标准来规范以及管理我们的网络 &AkzSgP  
于是3w出现了,计算机的网络时代来临了  Wl}G[>P  
`pn-fk  
嗯,说到这里,计算机发展到今天的历史大概说完了 ixUiXP  
我们来详细说说网络时代的计算机以及各个硬件供应商之间的关系 `K ~>!d_  
mAtG&my)  
前面说到了,计算机分为大型机,中型机和小型机…… }1E_G  
但是现在市场上没有人这样分,要是出去买机器,对硬件供应商说 ]Y/pSwnV  
我要买一款中型机,或者说,我要买一款小型机,硬件供应商肯定会问问题 crF9,p  
他们会问你买机器干什么用的?科学计算啊还是居家用,是作服务器啊还是图形设计 Lt ZWs0l0  
但不管怎样,简单地说大中小型机已经没有什么意义了 7i%P&oB  
我们按照使用范畴来划分 m''iE  
简单划分为 wZ#~+ }T  
服务器,工作站还有微机 _'o^@v:  
v: !7n  
服务器(server) 3n=cw2FG  
服务器涵盖了几乎所有的大型机以及大部分中型机甚至一些小型机

简单生活
执著追求
别笑我浅溥,天真的以为用一腔真诚就能感动这个冷漠的世界。
也别说我幼稚,竟想用不长的人生去诠释繁杂的红尘。
然而除了真诚,我还能给你什么,的确我真的一无所有!

级别: 店掌柜
发帖
5692
铜板
103378
人品值
1520
贡献值
26
交易币
0
好评度
5373
信誉值
0
金币
0
所在楼道

只看该作者 1 发表于: 2007-09-03
[hide=2]我想没有一个人愿意把大量的时间花在内存管理上,毕竟我们不是电子工程师 oBGstt@  
此时java的优势体现出来了,它完全屏蔽了内存管理 )l81R  
也就是说,如果你用java写程序,写出来的任何一个程序内存上的开销,都不受你控制 2+hfbFu,1  
乍一看,似乎你受到了束缚,但实际上不是这样 J0Rz.=Y  
因为虽然你的程序无法对内存进行管理,降低了一定的速度 ps4Wwk(  
但你的程序会非常非常的安全,因为你无法调用一个空指针 B[k+#YYY  
而不像以前写c的时候那样,成天因为空指针而担惊受怕 AF{7<v>/P  
当然,如果你深入了解这一行,就会发现java其实也无法保证程序不去调用空的指针 DdA}A>47  
但是它会在最大程度上避免空指针的调用 q=L* 99S  
这已经很好了,安全,这是java的最突出的优点 T[2f6[#[_  
B3k],k  
第三个,虚拟机跨平台,这是java最大的特点,跨平台 `qy6 qKl N  
可能所有人都知道windows,但是不是所有人都知道unix ~dX@5+Gd  
和java一样,很多人都不知道unix这种操作系统干什么用 NU 6Kh7  
我不想多说unix的应用,这不是主要,但是我要说,大部分小型机 4N^Qd3[d  
工作站,都跑在unix一族的操作系统上,比如linux/solaris \$0 x8B   
unix比起windows有一个最显著的特点,稳定,这就好比思科和华为 hghto \G5Y  
思科的机器慢但稳定,华为的机器快但不稳定,作为服务器这一端来说 x%Y a*T  
要的皇怯卸嗫欤??俏榷ǎ??評nix在服务器端还是非常有市场的 DqC}f#  
而且很重要的windows不安全,在ms的宣传中我想所有人都很少看到安全二字 `W;cft4  
因为windows操作系统针对的是pc用户,pc死机就死机咯,大不了重启 E* DVQ3~  
瘟95最经常冒出来的就是蓝屏,在服务器这一端上因为ms没有自己的芯片 wh[:wE]eX  
所以要做系统有些力不从心啊。扯远了,那么java可以做到在windows上编译 8Nl|\3nl-  
然后在unix上运行,这是c/c++做不到的 J7aK3 he  
^_"q`71Dk  
那么说到这里,java能做什么逐渐清晰起来 K^1O =1gY  
刚才说到了,java程序有一个的特点是安全 d$C|hT  
这个安全是针对你的系统来说得,系统在跑了java程序之后会特别地稳定 B7QtB3bn  
而且还能跨平台,那么很明显,java主要应用于除了windows操作系统以外所有的平台 lr= !:D=K  
比如手机,服务器 F7PZV+\  
想想看,如果你写的程序要跑在手机上,而手机有多少款用的是windows? ^zs4tCW%  
就算有,那如果你用c/c++,是不是要针对每一款手机写一套程序呢? e"8m+]  
累死,那跨平台的java就不用,做到编译一次,随时运行 =xQfgj  
同样,在服务器这一端,如果我想给一个网络门户站点,比如sina "/]tFY%Y  
写一个应用程序,pc的性能肯定无法满足sina这样大站点并发数量的要求 \(v_",  
那么它就需要买服务器,那么服务器ms没有市场,而且windows很不安全 DWevg;_]$(  
那么十之八九会买一个sun/ibm的机器,或者hp,但不管是谁的机器 Gxt<kz  
它装的操作系统也不会是windows,因为windows太不安全了,而且多核的支持太差了 nfPl#]ef*  
这个有空再说,那么如果你要写一个程序在这样的机器上跑 {UVm0AeUq  
难道我们就在这个机器上做开发么?当然不可能,一般程序员开发用的都是pc,windows =;?PVAdu%#  
那么该怎么办?写一个程序,然后再拿到服务器上去编译,去调试? 38.J:?Q  
肯定不可能,所以我们就希望找到一个语言,编译完生成程序之后 c#-97"_8  
在pc上调试,然后直接移植到服务器上去,那么此时,我们就会毫不犹豫地选择java d"$oV~>P|  
因为在跨平台以及安全性来说,java永远是第一选择 9tW.}5V  
R)d 7b,_Yd  
ok,下面说java的缺点 l+kg4y  
?9ho|  
一慢,这其实是一种误区,这就好比goto语句一样 ^T J   
java也抛弃了指针,虽然看上去似乎变慢了,但是在这个两三年硬件性能就能翻番的年代 ("@V{<7(t  
速度已经不是我们关心的问题了,而且对于企业级的应用来说 &_x/Dzu!z  
没有什么比安全稳定更重要的,换句话说,我们可以忍受慢,但是不能忍受死机和蓝屏 _nCs$ U  
而且越大型的应用,这种慢的劣势体现得越模糊 j`&i4K:  
因为当系统项目越做越大,任何一个环节做不好都可能影响全局的情况下 ^Ypx|-Vu!  
安全尤其重要,而且就像goto语句一样 +53zI|I  
这种过分追求速度的主张会给系统开发和纠错以及维护带来无可挽回甚至不可避免的损失 H\>I&gC'  
把内存交给计算机去管理吧,这种代价值得 xbC- ueEj  
我们做的不是pc游戏,没必要把内存的那一点点消耗当亲爹 kIZdN D&  
2*;Y%NcP[  
二难看,又是一个误区,很多人甚至拿出java swing控件画出的界面来说 'C8=d(mR=m  
呵呵,其实java不是不能画得好看,IDEA就是java写的IDE,挺漂亮的 #?d#s19s  
但为什么难看呢,是因为swing控件它本身就是unix时代的产物,swing控件贴近unix界面 0GR9C%"]  
老外看unix界面其实挺顺眼的,他们就是吃unix饭长大的 &@Gu~)^(  
而unix又是吃百家饭的,不像ms那么唯利是图,所以不怎么对中国人友好 m.g@S30  
加上我国又没有公司在做操作系统,所以看上去是不怎么顺眼 ~;4k UJD  
其实玩过unix的人都知道,unix对中文的支持一直不怎么好 +W3>Yg%)X  
5x'y{S<  
三我还没想到,其他人补充 9%k.GE  
[/hide]

简单生活
执著追求
别笑我浅溥,天真的以为用一腔真诚就能感动这个冷漠的世界。
也别说我幼稚,竟想用不长的人生去诠释繁杂的红尘。
然而除了真诚,我还能给你什么,的确我真的一无所有!

描述
快速回复

您目前还是游客,请 登录注册
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
认证码:
验证问题:
10+5=?,请输入中文答案:十五