Java咖啡馆(1)——叹咖啡
⽂章来源:电脑爱好者作者:Gary Chan
有⼈说,咖啡馆是⼀个叫⼈学会放慢步伐、享受⽣活的地⽅。这句话不⽆道理。港⼈常把饮咖啡称为“叹咖啡”,这
个“叹”字就有欣赏、品味的含义,舒适的环境,⾃然是招徕顾客之道。⾹港虽然⼨⾦尺⼟,但⽆论在闹市或是在风景区,都不难到精巧雅致的咖啡馆,它们或具欧陆情怀,或富英式韵味,⼤都环境优美、摆设得体、席位舒适、⽓派不凡。
⼀、序⾔
许多⼈想学习编程,但不知道从哪⾥开始。在这个连载中,我将为你介绍Java编程技术,以及Java程序的开发⽅法,从零开始,循序渐进,希望能够让你亲⾃品味Java这种咖啡的⾹醇与浓郁。
如果说看完这个连载你便能全⾯掌握Java技术,我绝不敢打这样的保票。喝再多咖啡,我也⽆法把Java的博⼤精深浓缩成⼀个连载。咖啡馆本来就是休闲的地⽅,所以,我将有选择地为你介绍Java技术的重要组成部分,涉猎⾯⼴,但不见得都⾮常深⼊。所以,如果想真正在Java技术上有所造诣,也需要你⾃⼰的努⼒和汗⽔。毕竟,咖啡闻起来⾹,但本⾝是苦的,只有不嫌弃这点苦,才能品尝到真味道。
不过你也不必把这个连载看作古板的教程。Java技术从问世到如今,已有近10年的历史。在Java技术成长过程中,涌现了数不尽的英雄⼈物,帮助Java技术创造了史诗般的辉煌。在这个Java咖啡馆中,我们还准备了许多有趣的传记或故事,称之为“黄糖故事”。本来嘛,编程即创造,本⾝就有⽆穷乐趣。
⼆、什么是Java
或许你会把Java理解为印度尼西亚的⽖哇岛,那⾥是早期印度-⽖哇⽂化的中⼼,盛产具有良质酸味的阿拉⽐卡咖啡。然⽽在计算机业界中,⼀提起Java,⼈们的神经细胞就会⽴即兴奋起来,因为Sun的Java技术实在⽕得不得了!
⾸先你应该理解⼈们说的Java究竟是指什么。先说明⼀下,如果你是初学者,下⾯某些新名词难免会让你打问号。我希望你能够耐⼼看完并努⼒去理解,因为,这些名词会对你理解并喜爱Java有相当帮助。
当⼈们谈起Java,他们或许是指这些概念中的⼀种:
★Sun公司的Java编程语⾔,⼀种⾯向对象的(Object Oriented,OO)编程语⾔。Java语⾔是C++和Smalltalk等计算机语⾔的衍⽣物。学习Java语⾔,类似于学习⼀门⾃然语⾔(⽐如英语)的语法。
★Java虚拟机(Java Virtual Machine,JVM)。Java语⾔编写的程序运⾏在虚拟机上,⽽Java虚拟机是J
ava程序和操作系统间的中间层,所以Java程序可以运⾏在所有⽀持Java虚拟机的电⼦设备上(注意,不仅仅是个⼈电脑哦,电⼦设备还包括⼿机、PDA以及信息家电等),⽽且不需要任何额外的操作,这是其他计算机语⾔⽆法⽐拟的优点。Sun公司推⼴Java的⼝号便是“⼀次编写,随处运⾏”,Java虚拟机便是这句⼝号的基⽯。
★Java应⽤程序编程接⼝(Application Programming Interface,API)。Java API是预先编写好提供给程序员调⽤的函数,⽐如磁盘读写、⽹络调⽤、绘制图形等。如果把Java语⾔⽐作⼀门⾃然语⾔的语法,那么API便是⼀部满是好⽂佳句的书籍,⽤它可以帮助我们更⽅便地进⾏写作⽽不必样样从头写起。
★Java技术的应⽤。“哇!你的这部⼿机⽀持Java呢!还是RPG游戏?!赶快给我玩,否则……”没错,由于Java语⾔创造性的优点,⼜是⾏业标准,所以受到各⼤企业的追捧,有⼴泛的应⽤。详细介绍请参考第三节。
黄糖故事
⾯向对象(Object Oriented,OO)
Java和C++语⾔中的⾯向对象编程机制被认为是继C、FORTRAN等过程式语⾔之后的⼜⼀⼤进步。使⽤OO开发软件,程序将更简单、更健壮,所以OO是迄今为⽌最成功的编程机制。实际上, Smalltalk才
是第⼀个完全⾯向对象的动态计算机程序设计语⾔,Smalltalk的发明者Alan Kay今年4⽉19⽇还荣获2003年度有“计算机界诺贝尔奖”美誉的ACM图灵奖。值得⼀提的是,Alan Kay在投⾝计算机⾏业之前,曾经是职业⾳乐家,他的讲演以多姿多彩著称。
OO的学习曲线⽐较陡峭,所以,如果你已经掌握其他OO语⾔,那么学习Java便轻松许多,否则还是需要下⼀番功夫的。如果你没有接触过OO,也不⽤着急,我们将会在教程中慢慢接触OO。不过,千万不要知难⽽退⽽跳过OO这个重要环节。学习Java语法不难,但写出地道的OO代码,需要对OO有相当的领悟。
三、诱⼈的Java技术
⾸先我们谈谈Java技术。需要说明的是,与平时经常听到的或使⽤的C、C++、Visual Basic、Delphi等计算机语⾔不同,Java技术特指应⽤,⽽不是Java语⾔。
⾔归正传。Java技术是帮助你体验互联、享受互联的科技。Sun微系统公司(Sun Microsystems)1995年发明Java以
来,Java技术⼴泛应⽤于各种设备,为你提供各种⼯具、信息以及好玩的游戏(见图1)。
1.商业应⽤
Java技术意味着商机。Java技术可以运⾏在⼏乎所有类型和规模的设备上,⼩到计算机芯⽚、蜂窝电话,⼤到超级计算机,⽆所不在。
超过1亿5千万的移动电话集成了Java技术;PDA和寻呼机中也⽤到Java技术;电⼦游戏机、电视机、⽹站等,也是Java 技术的受益者;个⼈电脑都预装了Java平台(最新的Mac OS X终于能够⽀持Java了。Linux⼀贯⽀持Java。Windows本来⽀持Java,并且与Sun有法律合约,可是,当⽐尔·盖茨发现Java技术已经严重威胁到了微软⾃⼰的技术时,便悄悄在Windows XP中撤销了Java技术的集成。当然,这种拙劣的⼿段很快被发现,微软被Sun告上了法庭,不得不赔偿⼀⼤笔分⼿费,终于合法地使阴谋得逞。不敢直⾯惨淡的竞争,真是让⼈扼腕叹息。所以,Windows XP的⽤户需要安装Java的运⾏库才能够使⽤Java技术;连红⾊星球上也有Java技术的运⽤。
黄糖故事
Java技术与红⾊星球
当科学家们最后确认了“勇⽓”(Spirit)号探测器成功登陆⽕星之后,地球⼈都欢呼雀跃起来:“这真是⼀个伟⼤的创举!”
在美国加州帕赛迪纳国家宇航局的喷⽓推进实验室内,Java之⽗——James Gosling博⼠肯定感到他就
像在家⾥⼀样,因为他周围全是Sun的⼯作站。“这显然是迄今为⽌Java应⽤中最酷的⼀举!”James Gosling博⼠⾼度赞扬说,“Java应⽤使公众可以实时观看、并下载⽕星图像。它让⼈们看到⽕星清晰的三维⽴体图像,还有⼀个模拟探测器。”
这⼀Java应⽤被称为Maestro。Java技术给美国宇航局带来了操纵“勇⽓”号简单易⾏的低成本⽅式。Sun实验室和NASA 喷⽓推进实验室还正合作研发⼀个基于Java技术的控制系统,它将使未来的宇宙探测器在探测这个红⾊星球之时能够具有智能化的、独⽴进⾏决策的能⼒。
依托Java技术和Sun的服务器技术,Sun还与计算机业界中许多领头企业组成联盟,搭建了构架先进、运⾏可靠的业务系统,帮助企业、政府、教育机构等更⽅便、更有效地交流与合作。⽐如,中国⼈民保险公司的电⼦商务系统就是由Sun与Oracle(著名的数据库公司)与BEA(著名的中间件公司)共同组建的。瑞⼠银⾏、意⼤利造币⼚等也都采⽤了Java技术。
实际上,我们⾝边的许多品牌都是Java技术的合作者,⽐如富⼠、惠普、摩托罗拉、诺基亚、松下、西门⼦等。你可以在Sun的⽹站上到长长的列表。
2.移动通讯
是否还记得⼿机只能⽤来打电话的⽇⼦?感谢Java技术,如今⽀持Java技术的⼿机变得越来越可定制,⼿机游戏也越来越吸引⼈。
使⽤最新Java技术的⼿机,可以浏览应⽤程序、游戏、服务的列表,然后直接⽆线下载,即装即⽤,再也不会因为⼿机集成固定的⼏款游戏⽽玩腻。随着游戏商或者软件公司的不断发布,你每天都有新的游戏可玩、新的软件可⽤。
java手机游戏下载网站 3.桌⾯应⽤
Java技术使得个⼈桌⾯电脑也变得更有趣、更互动。Windows?Mac OS?Linux?⽆所谓,使⽤Java技术的程序可以运⾏于任何操作系统!同时,Java技术也能够提供从联⽹的⾓⾊扮演游戏到市场跟踪调查应⽤程序,⼀应俱全。
Java桌⾯系统(Sun Java Desktop System)是Sun公司基于Java技术的新⼀代桌⾯系统,结合了Sun技术驱动的最优秀的开源软件,如GNOME桌⾯环境、StarOffice 办公套件、Mozilla浏览器、Evolution邮件与⽇历客户端、Java 2平台标准版等,是⼀个集成管理⼯具和开发⼯具、容易管理、⾼度安全的桌⾯客户系统,⽬标直指微软的Windows+Office系统套装。⽏庸置疑,Java桌⾯系统低廉的价格、出⾊的安全性和完整的商务功能,正是微软系统的软肋。为了新⼀代桌⾯系统的明天,Sun还启动了名为Looking Glass的⾼级项⽬。如若窗体透明并且⽴体使你可以同时操作多个窗体,你会有怎样的体验?随⼼所欲地在当前浏览⽹页上加上你的注释?你的CD或者电影数据库变成3D的电唱机(如图3)?在不远的将来,Sun将在Java桌⾯系统中加⼊这样的⾰新,给使⽤者带来更丰富的使⽤体验。
4.开发者
为了⽅便开发者,Sun把Java区分为J2SE(Java 2 Standard Edition)、J2EE(Java 2 Enterprise Edition)、J2ME(Java 2 Micro Edition)和Java Card四种平台。J2SE是所有Java技术的基础,不管开发⼈员要开发什么平台的Java应⽤程序,都必须先从J2SE学起。J2EE技术着重于企业服务器端的应⽤。J2ME主要针对嵌⼊式系统,包括⼿机、PDA等。针对⼿机应⽤程序的开发,Sun还提供了免费的J2ME Wireless Toolkit。Java Card技术⽤来开发可以植⼊IC智能卡中的应⽤程序。
以上四种平台的软件开发包(Software Development Kit,SDK)都是免费的,可以从Sun的⽹站下载。当然,只⽤SDK未免太不讲究,我们需要开发⼯具来提⾼开发效率。这样的⼯具叫做集成开发环境(Integrated Development Environment,IDE)。以往,Borland JBuilder和IBM Eclipse这两个IDE最受Java程序员的青睐,⽽Sun⾃⼰的IDE却名不见经传。2004年以后,Sun把⾃⼰的IDE摆放到重要的位置,努⼒推进NetBeans和Java Studio的开发。前者是完全⽤Java撰写的开放源代码的⼯具,⽽后者则是重量级的官⽅开发⼯具。Sun的开发⼯具可谓根正苗红,Java程序员终于可以沐浴Sun(阳光)普照了!
Java咖啡馆主要和J2SE打交道,当然不会略过J2EE和J2ME的知识,值得期待哦!
四、Java语⾔的优势
虽然Java技术是那么的诱⼈,前景也似乎⾮常光明,但是不是已经有了C、C++等⼴泛应⽤并且⼤获成功的语⾔了吗?微软不是⼜在⼤⼒推⼴他们的.Net技术吗?LISP、Prolog等⼈⼯智能语⾔在北美洲、欧洲的⾦融领域不是也有很⼤的应⽤吗?学习Java编程,是不是⼀个明智的选择呢?
带着这些问题,让我们来看看Java的优势。
1.免费!
Sun免费提供⽤来开发Java应⽤程序的⼀切,你不必付任何的版税。或许你会将信将疑:资本家搞共产了?实际上,Sun在Java上的收益确实不⼤,远远⽐不过垄断Java应⽤服务器技术的IBM和BEA公司,似乎有替别⼈做嫁⾐之嫌。对此,Sun董事长、总裁兼⾸席执⾏官Scott McNealy是这样解释的:“Sun并没有⽤Java赚钱,这就像使⽤英语不⽤上税⼀样,Sun并不通过Java本⾝来盈利,⽽是把Java应⽤到了业务中。”原来是放长线钓⼤鱼!
与Java本⾝相⽐,Java API更是可贵的免费财富。想使⽤Socket操作⽹络?API中有;想连接到SQL数据库?API中有;想给应⽤程序⼀个漂亮的⽤户界⾯?API中有;想要处理数字图形、播放⾳乐、解析字符串或者创建数字签名?API中全都有。
或许你会问,有了那么多优秀的教程,还要你这个Java咖啡馆⼲什么呢?嗯哼,虽然那些教程和技术
⽂章是如此优秀,但并不适合初学者。Java咖啡馆⽬的就在于帮助你打好Java技术的基础,掌握Java技术的主要脉络,帮助你迈出进⼊Java世界的第⼀步!
2.跨平台
“⼀次编写,随处运⾏”,Java系统可以运⾏在不同的操作系统和硬件上。随着Linux的持续增长以及Mac OSX完全⽀持Java技术,跨平台的特性变得越来越有分量。
由于Java跨平台,Java API⾃然也是平台统⼀的。对程序员⽽⾔,没有⽐统⼀的API函数能够让他们更欣慰的了——已经有了圆形的轮⼦,何必再从头发明轮⼦呢?我们拿Java API与C++的类库相⽐便可以知道它的可贵之处。有Windows编程经验的C++程序员肯定经历过被MFC(Microsoft Foundation Classes,微软基类库)折磨的⽇⼦,学习曲线陡峭,没有若⼲个⽉根本⽆法开始⽣产,⼀段时间不接触遗忘率⼜⾼。据说,即使在微软公司内部,除了MFC开发⼩组,谁都不乐意⽤它。即便你熟悉了MFC,能够顺利开发Windows应⽤程序,如果你要编写⼀个Linux应⽤程序,MFC⼜派不上⽤场了,你必须学习Linux下C++开发的⼀套库函数。还有UNIX、FreeBSD、Mac OS……你学得过来吗?反观Java API,操作系统,你爱谁是谁,只要编写⼀次便可随处运⾏!
3.在学术界获得了强有⼒的⽀持
由于免费、跨平台、Java语⾔本⾝技术先进,在⾼校中,Java 已经成为许多学科研究、课程和计算的⾸选语⾔,⽤Java 做上机作业,⼀般都是⿎励的。据我所知,北⼤、清华许多院系的研究⽣⼊学考试都可以⽤Java语⾔答题。实际上,⽤Java 来完成这些⼯作,⼤多数情况下要⽐⽤C或其他语⾔简洁得多,你可以把注意⼒集中在算法等核⼼部分,从⽽获得更⾼分数。
掌握Java技术的学⽣⼀般有更多的⼯作机会课余兼职,拿到更⾼报酬,不但减轻家⾥的负担,更可以让⾃⼰早⽇进⼊社会锻炼。所以,如果你还在求学,学习Java,⼀定没错的。
4.简单
与C++等语⾔相⽐较,语法上Java是简单的。
谢天谢地,Java提供了垃圾回收机制。以往C++的开发中,最容易出错误的地⽅便是内存管理,申请的内存⽤完以后必须释放,否则可使⽤的内存资源越来越少,直⾄耗尽系统资源⽽造成死机。⽽Java系统中,你可以任意申请内存,Java系统会在适当的时候⾃动释放⽆⽤的内存资源。这个神奇的机制叫做“垃圾回收”,节约了许多调试错误的时间。
在Java中,要写出低劣的代码也不是⼀件容易的事情。⼀⽅⾯,垃圾回收机制堵住了内存泄漏的可能性,另⼀⽅⾯就是异常捕捉机制,它强迫你做最坏的打算。编写程序时,难免会遇到⼀些意外,⽐如⽂
件⽆法打开、⽹络读取失败等特殊情况。在C++等语⾔中是依靠返回值来判断的,如果⼀句句地检查返回值,那实在是太⿇烦了。从⽽,程序员习惯性地忽略返回值的检查,并安慰⾃⼰⼀切都会好起来的。这便埋下了隐患。在Java中,Java的⽅法可以抛异常,⽽你必须应答异常,即使你不想进⾏任何操作。⽐如编写打开⽂件的代码,你不得不响应异常以防意外发⽣,否则程序根本不能够通过编译。未⾬绸缪,使
得Java系统更稳健。
5.企业应⽤的成熟平台
这是Java技术⽬前最活跃的两⼤领域之⼀。我们在前⾯Java技术介绍中已经提到了不少,这⾥仅关注跟我们切⾝相关的优势。
Java技术的企业应⽤旨在提升企业竞争⼒,所以Java技术受到了企业的欣赏,市场份额是同类技术中最⼤的。同
时,Java开放标准,所以供应商众多。市⾯上有许多的应⽤服务器、⼯具与构件可以选择,从⾼端的BEA WebLogic、IBM WebSphere等商业软件,到Tomcat、JBoss等开源的免费⼯具,⼀应俱全。作为Java技术的初学者,不需要任何花费就能够进⾏Java企业应⽤的⾃我培训,以后若参与Java的商业项⽬开发,便可以⽆缝地把软件移植到⾼端的商业平台上去。反
观.Net,想免费⾃学,不盗版是不可能的啦。
最后谈谈Java和Web服务。Web服务是软件互操作历史上的⾥程碑,是技术发展的重要⽅向,是你绝不能不了解的技术。Sun公司是Java语⾔的发明者,⽽作为⼀个开放的跨平台的技术体系,Java在Web服务的开发⽅⾯起着⾮常重要的作⽤。Sun被接纳为促进Web服务交互组织WS-I的董事成员后,作为活跃的参与者和业界的领导者,对Web服务互操作性的促进,有着相当重要的意义,也为Java技术的含⾦量加上了关键的砝码。
6.⽆线应⽤
这是Java技术⽬前最活跃的另⼀个领域,旨在提供更多、更⽅便的个性化服务的Java⼿机应⽤。未来⼏年内,势必将出现移动通讯运营商和移动设备应⽤软件的巨⼤商机和激烈竞争,并且该趋势很可能与电⼦政务、电⼦商务等其他发展相互影响。Java在⼿机市场的专有性和Java本⾝的开放性和标准性,使得越来越多的企业加⼊了Java阵营。
中国也不例外。2003年James Gosling博⼠⾸次来到中国,其中重要的⼀项⼯作便是与中国联通结盟。
黄糖故事
Java之⽗——James Gosling博⼠
James Gosling博⼠以“Java技术之⽗”闻名于世。他是Java技术的创始⼈,作为Sun研究院院⼠,亲⼿设计了Java语⾔,完成了Java技术的原始编译器和虚拟机。在他的带领下,Java现已成为互联⽹的标准编程模式以及分布式企业级应⽤的事实标准,其跨平台的技术优势为⽹络计算带来了划时代的变⾰。⽬前,Gosling博⼠积极致⼒于软件开发⼯具的研究,以使软件开发⼯具的功能更强⼤,更容易为开发⼈员所使⽤,确保应⽤、服务开发的迅速完成。
实际上,⼿机游戏开发也是⼀项不错的职业与机遇,成功的例⼦已经不在少数哦。
7.开放的Java社团——Java Community Process,JCP
JCP是⼀个让Java出名的功⾂。JCP创造了⼀个开放型论坛,让同好在此交换意见,探索、定义新的平台,策⼒。Java欢迎竞争,因为只有这样才能最⼤限度地提⾼领域内的技术,这点与对⼿微软.Net技术⼤相径庭。在Java的舞台上有很多演员,任何⼈都可以参与到JCP的过程中去,帮助Sun决定Java的发展和未来,同时也挑战⾃⼰的影响⼒。从⽽,你可以发现Java世界中新的名词层出不穷,远远⾛在规范之前。⽽在微软.Net技术的舞台上,你只能看到⼀个演员,那就是微软⾃⼰。
8.开源组织或者⾮盈利机构的⽀持
开源组织是⽆政府主义的梦想——没有政体,没有所属权,⾔论与⾏动⾃由,仅仅依靠渴望共享与交
流的信仰及⽆私奉献来维系。Java世界中,开源组织与⾮盈利机构发挥到了极致,许多出⾊的⼯具都出⾃它们之⼿。⽐如JUnit、Cactus、Tomcat、Struts、JBoss、Eclipse、ANT、Xerces、Hibernate、Axis、AspectJ等等,许多⼯具还会出现在我们的咖啡馆中,扮演重要的⾓⾊。
Java世界中,便宜⽆好货绝对不成⽴,这些⼯具拥有⾜以和商业软件媲美的质量,很多商业IDE还集成了这些⼯具。对Java程序员⽽⾔,⽣活不单单会变得轻松,更重要的,你能够看到希望,有为⼤家贡献⾃⼰⼒量的机会!
五、⼩结
看到这⾥,如果你能够有学习Java技术的冲动,我也⼼满意⾜了。选择⼀门语⾔是困难的,你必须有所取舍。即使你是坚定的微软技术迷,有时间也欢迎到这个咖啡馆⼩坐⼀会⼉,叹⼀叹Java这别样的风情。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论