能够成为Java高手的25个学习要点

来源:互联网 发布:显示3g网络网速是2g 编辑:程序博客网 时间:2024/04/30 17:24

1. 你需要精通面向对象分析与设计(OOA/OOD)、涉及模式(GOFJ2EEDP)以及综合模式。你应该了解UML,尤其是classobjectinteraction以及statediagrams.

    2. 你需要学习Java语言的基础知识以及它的核心类库(collectionsserializationstreamsnetworkingmultithreadingreflectioneventhandlingNIOlocalization以及其他)。

    3. 你应该了解JVMclassloadersclassreflect以及垃圾回收的基本工作机制等。你应该有能力反编译一个类文件并且明白一些基本的汇编指令。

    4. 如果你将要写客户端程序,你需要学习Web的小应用程序(applet),必需掌握GUI设计的思想和方法,以及桌面程序的SWINGAWTSWT.你还应该对UI部件的JavaBEAN组件模式有所了解。JavaBEANS也被应用在JSP中以把业务逻辑从表现层中分离出来。

    5. 你需要学习Java数据库技术,并且会使用至少一种persistence/ORM构架,例如HibernateJDOCocoBaseTopLinkInsideLiberator(国产JDO红工厂软件)或者iBatis.

    6. 你还应该了解对象关系的阻抗失配的含义以及它是如何影响业务对象与关系型数据库的交互,和它的运行结果。还需要掌握不同的数据库产品运用,比如OracleMySQLSQL server.

    7. 你需要学习ServletsJSP,以及JSTLStandardTagLibraries)和可以选择的第三方TagLibraries.

    8. 你需要熟悉主流的网页框架,例如JSFStrutsTapestryCocoonWebWork,以及他们下面的涉及模式,如MVC/MODEL2.

    9. 你需要学习如何使用及管理Web服务器,例如tomcatresinJrun,并且知道如何在其基础上扩展和维护Web程序。

    10. 你需要学习分布式对象以及远程API,例如RMIRMI/IIOP.

    11. 你需要掌握各种流行中间件技术标准和与Java结合实现,比如TuxedoCROBA,当然也包括JavaEE本身。

    12. 你需要学习最少一种的XMLAPI,例如JAXPJavaAPIforXMLProcessing)、JDOMJavaforXMLDocumentObjectModel)、DOM4JJAXRJavaAPIforXMLRegistries)。

    13. 你应该学习如何利用JavaAPI和工具来构建WebService.例如JAX-RPCJavaAPIforXML/RPC)、SAAJSOAPwithAttachmentsAPIforJava)、JAXBJavaArchitectureforXMLBinding)、JAXMJavaAPIforXMLMessaging)、JAXRJavaAPIforXMLRegistries)或者JWSDPJavaWebServicesDeveloperPack)。

    14. 你需要学习一门轻量级应用程序框架,例如SpringPicoContainerAvalon,以及它们的IoC/DI风格(setterconstructorinterfaceinjection)。

    15. 你需要熟悉不同的J2EE技术,例如JNDIJavaNamingandDirectoryInterface)、JMSJavaMessageService)、JTA/JTSJavaTransactionAPI/JavaTransactionService)、JMXJavaManagementeXtensions),以及JavaMail.

    16. 你需要学习企业级JavaBeansEJB)以及它们的不同组件模式:Stateless/StatefulSessionBeansEntityBeans(包含Bean-ManagedPersistence[BMP]或者Container-ManagedPersistence[CMP]和它的EJB-QL),或者Message-DrivenBeansMDB)。

    17. 你需要学习如何管理与配置一个J2EE应用程序服务器,如WebLogicJBoss等,并且利用它的附加服务,例如簇类,连接池以及分布式处理支援。你还需要了解如何在它上面封装和配置应用程序并且能够监控、调整它的性能。

    18. 你需要熟悉面向方面的程序设计以及面向属性的程序设计(这两个都被很容易混淆的缩写为AOP),以及他们的主流Java规格和执行。例如AspectJAspectWerkz.

    19. 你需要熟悉对不同有用的APIframe work等来为你服务。例如Log4Jlogging/tracing)、Quartzscheduling)、JGroupsnetworkgroupcommunication)、JCachedistributedcaching)、Lucenefull-textsearch)、JakartaCommons等等。

    20. 你应该熟练掌握一种JavaIDE例如sunOnenetBeansIntelliJIDEA或者Eclipse.(有些人更喜欢VIEMACS来编写文件。随便你用什么了)

    21. Java(精确的说是有些配置)是冗长的,它需要很多的人工代码(例如EJB),所以你需要熟悉代码生成工具,例如XDoclet.

    22. 你需要熟悉一种单元测试体系(JNunit),并且学习不同的生成、部署工具(AntMaven)。

    23. 你需要熟悉一些在Java开发中经常用到的软件工程过程。例如RUPRationalUnifiedProcessandAgilemethodologies.

    24. 你还需要紧跟Java发展的步伐,比如现在可以深入的学习Webwork2.0.

    25. 你必需要对实际项目的开发流程有所了解,至少要有两个有实际应用价值的项目,而不是练习项目!因为现在企业看重的是你有没有实际的开发经验,真正开发经验的体现就是你做的项目,也就是有实际应用的项目!

平台之争 Java.NET谁更有前途为什么会有Java,为什么会有.NET

有人说,Java是为了跨WindowsUNIX而产生的。是这样吗?Sun有自己的操作系统solaris,并且打的是高端市场,而Java发展早期阶段,Windows还主要定位在中小型企业,并没有打算与Sun一争高端客户。

而且Sun的用户大部分都是大型企业级,而Windows定位在家庭消费用户,由于Windows已经成为桌面OS的事实标准,Sun根本无意抢夺 Windows的地盘,而且Sun有自己的操作系统,扩大自己产品销售才是第一。

但是UNIX一直是个混乱的世界,各种UNIX版本在并存,你为这种 UNIX开发的应用,却很难在另一种UNIX上跑通.应用的阻塞影响了UNIX市场需求的扩大,就象没有SQL Server,没有OFFICE,没有Windows 游戏,Windows上的开发工具,就算你的操作系统做的再漂亮再容易我们也会扔掉Windows.为什么?因为没用,我买回来一个大铁家伙,我什么也做不了.Sun就出于这种考虑,所以才有VM的想法,否则谁傻了,做个又慢又麻烦的VM.所以说Java的产生,只是为了跨UNIX平台.当然能跨 Windows,吃定Windows,那岂不是更好,呵呵呵,Sun为自己的妙招而没事偷着乐.

那为什么会有.NET?可是Windows就一个呀,它也要跨平台?而且微软已经把CLI提交给标准委员会,看来是真要跨了?真的吗?

从外表来看,Windows确实是一个.但是从技术角度来看,Windows3,Windows95,Windows2000是截然不同的三种架构.在中国,大家对新技术的追求比较热衷,所以说一个企业中这三种操作系统并存互连的可能性不怎么大.但是老外是精打细算,不见兔子不撒鹰,所以你在国外企业运行很老的系统也不要见怪.微软为了同时维护这几种操作系统也是煞费苦心,而且由于技术是各个时期形成的,有的技术由于历史发展原因有明显的缺陷,也无能为力修改了,而且为了功能更强大,API海洋,DLL黑洞,ACTIVEX,OLE,COM,DCOM,COM+,各种技术交叉,,其中苦谁了解?所以跨WINDWOS平台是微软制造.NET的一个原因,这样给你一个抽象的统一的平台后把你摆平后,他再着手修改他的底层,省得一天人们叫着 Windows安全,Windows不稳定.当然从J2EE的火热场面来看,拉去了很大一批Windows平台上的C++程序员.失去了应用开发的源头,那还有什么发展?如何拉回这批程序员让他们继续为Windows开发当然也是.NET的原因之一,这就是为什么.NET从架构到开发语言都与 Java极其相似的原因,就是吸引你平滑的再回到微软的世界中,如果跨度大了,程序员就有了迟疑.,如果没有Java,如今的C#也不会是如今这样,原本它会更好,我想ANDERS一定心中很郁闷,但是商业是不以个人意志为转移的.而且现在已经不是桌面为王的时代了,现在是互连网的时代,Java是第一个有强大开发WEB应用的完整体系,而当时微软的技术还是七拼八凑,只是互连网一下到来微软刚醒过神来仓促应战的结果,当然无法与J2EE媲美.想在互连网时代也分一杯羹,必须也有一个完整的体系,于是.NET就产生了.

我们已经有了Web Service,我们还需要.NET?

其实技术发展到如今的应用集成时代,用户的需求就是把现在各种平台上的应用集成起来.集成的方法有很多种,当然跨平台也是一种.不过最省力的还算是WEB SERVICE.因为现在已经是组件应用的天下.各种COM,EJB,CORBA成为快速组装企业应用的主流技术.组件是位于操作系统,数据库,网络之上的技术,站在组件的层面上,下面用什么技术已经无所谓了,因为已经被组件屏蔽了.如果我们能把我们的组件互连起来,不也可以集成吗?应该怎么做?这几项技术都分属于不同公司,想联合真不大容易.这时就要找到每个体系公共的东西,用公共的东西把他们连在一起不就行了.找呀找,终于发现,TCP/IP.随即几大公司都发现了突破口,需要快速占领先机.由于Sun一直在Java发展的问题上给了IBM很大的阻塞,所以IBM宁愿先和微软联合做,如果微软有什么不轨之心,就放出Sun,让他们互相咬,然后在适当的时机出来装出老大的样子摆平他们,给他们俩制定一个适合自己发展的竞争协议.

我们已经可以互连了,我们干吗要.NET.我们的问题已经解决了,我干吗花钱再投资呢?经济本来已经很不景气了.

但是,微软看来已经决定不在现有基础上增强ASPCOM+,现在是互连时代,也是组件时代,两大要命的地方我都不升级了,你自己看着办,我可没逼着你买.

.NETJava在中国哪个更有前途?

这个问题好象已经不用再争了.中国90%的用户是Windows用户,保护现有投资,使用很习惯很易用不用重新学习,我又不用跨平台,我干吗要换Java .过去是微软没有提供很强大的WEB开发解决方案,现在提供了,我干吗要用Java.而且. NetJava出的迟,肯定会吸收Java的优点,弥补Java的缺点.而且微软的VM肯定和Windows结合的很好,性能不用担心.我干吗用 Java?而且微软显然把宝已经压到了.NET,你难道还要在.NETVM上再加一层JavaVM?

.NET有什么新的亮点?

当然是ASP,ADOCOM+,还有清晰的架构,并且由于统一的类库,我们为WEB,GUI,MOBILE而开发的应用会很容易的转来转去,不象过去开发,各需要学习不同的知识.ASP终于结束了网页意大利面条式的程序,面向对象和支持多种语言,使构筑强大复杂的WEB应用提供了比JSP更凶猛的功能,让人不得不爱.ADO.NET也抛弃了过去的数据集一Scroll就连数据库进行提交的糟糕速度,代而取之的是多条修改可以一次性提交上去.这样性能会提高很多.COM+?COM+1.5的特性大家在WINXP上也看见了,1.0强了很多,未来还不用注册, COPY完就能用,多舒服.至于安全,稳定嘛,这话不敢讲.因为盗亦有道,Java也同样如此,无法说谁比谁好.

.NET真的会跨平台吗?

微软的命根子是操作系统,微软此次出.NET也是为了打入高端市场.怎么打入?微软第一已经在用C#收买 Java程序员了,并且做JavaC#的映射工具,先断了Java应用的前途,后面用CLI提交给标准委员会,让别人开发UNIX上的平台,微软不在正面和UNIX阵营冲突,以免犯众怒.UNIXWindowsCLI都有了时候,基于CLI的应用可就两个系统都能用了,这会帮助微软销售多少其他产品呀.这不,微软在支持着好几个Open Source社团在开发UNIXCLI.跨平台的事微软不会轻易干的,否则微软的命根子怎么办?

.NET真的支持多种语言吗?

开发更多的基于.NET的应用,.NET快速成长起来.第二.NET是一次比较大的革新,广大的各类程序员能否跟的上也是个问题.多语言的支持当然会,但是不会支持的很好,否则微软大力做C#干吗呀,如果别的语言和C#一样好,那微软还混什么混呀.最糟糕了,也要其他语言的技术比C#慢半拍.不过先走也未必领先,就象DELPHI就后来居上,这么大的市场,微软是不可能通吃的.

我们需要转到.NET上吗?

你可以不转.就看你需要不需要INTERNET.我想在未来,没有企业会说INTERNET对我没有一点作用.

现有应用能否平滑过渡呢?

在这个问题上可以看一下微软的历史.微软在做完WINNT4的时候其实已经在策划现在的WIN2000,但是为什么在WIN95后有WIN98, WINME,WINXP,不是他当时做不了那样的技术,而是必须引导着客户一步步走,要追随客户,走的太快,就会丢失客户.在这个重大的转折点,微软也会如此.而且在现在的Windows.NET,你运行现在的程序一样没问题,速度依旧,操作方式也依旧,因为他使用了两种手段来区别对待这两种应用程序.

什么时候转?

如果你需要抢占市场先机,现在转正好,因为能支持ASP.NET,ADO.NET开发的VSS.NET已经推出快一年了,就是有能力欠缺的问题,第二版的出来也不会太晚了.不过话在前头,确实在实际的开发中,Vss.NET确实有些做不了的事情,不要看他好象什么都有,这就跟微软当年宣布COM有池化的功能一样,仅有一个外壳.这是微软的策略,跟不跟着走,你自己看.稳健型的公司建议在第二版出来后应用,因为微软的产品一向在第三版才会好用.

作为开发商,跟随.NET的难点是什么?

难点难就在,过去我们的开发方式,拖一些控件,连个数据库,更新或SELECT一些数据.再深一些就是消息,或者是一些不常用的API.记住:.NET是微软进攻高端市场的第一步,现在的微软不是我们过去熟悉的微软,Vss.NET的一推出,就是强烈给人一种这样的感受:从建模到开发到测试到发布,全套企业级的工具都无缝相接,而且处处体现着OO和设计模式,在宣传中也频繁提到,昭示着这个工具是为大型应用开发而定制的.所以宝刀也需有能力的人才能拿的动,否则只能砸了自己的脚.对于现在的Java开发工具也是如此,好象全世界一下都没有了小型企业一样.我们是否具备了优秀的设计师,建模师,OOP的程序员,我们是否有一整套流畅的开发流程来支持全程建模,我们都需要深思.在微软的.NET的各种培训上,培训师也是反复强调分析设计,大型项目管理,自动化工具的支持,你做好准备了吗?

Sun在微软拆分问题上输了吗?

微软的案子打了这么多年,居然庭外和解.Sun确实挺郁闷.不过Sun并没有输.为什么这么说呢?依毛主席的话说就是:敌进我退,敌疲我扰.确实微软在. NET的发展上受了很多牵绊,否则也不会到如今才推出来个框架.在硅谷,时间就是机会,时间就是金钱,谁前进的快谁就能占先机,显然Sun并不是最痛苦的一个.

Java的未来

Windows的用户量和微软进攻高端企业应用的决只是呆板的图形,不能全方位的表现网络的传输技术,使应用进步更加依赖硬件而不是软件,微软亚洲研究院为什么在做哪些研究,就是因为他们不断在思考未来是什么,所以每一次技术的浪潮他们总在浪头.当然未来还会有所改变,但是他们会及时调整他们的战略,但大方向不会错到哪去!

当技术不再是阻碍应用发展的主要因素,比如宽带的来临,这时候你想过没有,在它上面,该做些什么呢?世界有多大,你能看多远?为什么在每次浪潮到来时你都无法预想到,而感叹这世界变化如此之快?

我对微软的发展的一些看法:

微软把.NET扩展到高端市场和移动设备市场,.NET开发的程序可以在基于.NET的任何设备上都可以运行,大家不需要为不同的设备用不同的工具开发应用,应用极大的推动了基础软件的扩大,就象OFFICE,SQL Server辅助扩大了Windows的销售一样.

未来的XBOX也会变成.NET平台,成为家庭连网的安全网关和交易网关和信息网关,如果你觉得微软进入游戏业就是为了眼馋游戏这块利润,那你就大错特错了,这个皮毛根本不值得微软大动这么财力.

PDA和手机也和机顶盒一样嵌入.NET,你打开电视,你打电话,你玩游戏,你工作,你上网,你甚至打开冰箱,你都不会知道在背后支撑的是.NET,从高端服务器到你的手机,全部是微软的软件这是一个伟大的设想,如果微软能够兢兢业业的走,凭这样的财力人力和管理和经营战略,10,实现的可能性非常大,这不是以个人意志为转移的,你说他倒他就会倒吗?

如果会成功,当然微软会成为人类历史上最伟大的公司,赚取的财富已经不能再提,最关键的问题是:我们全人类的生活和工作被一个私人的商业公司所控制着.

只是到那个恐怖的地步,你是否有勇气和能力把他拆分.因为他足以触及到你的生活和工作,社会的经济,政治活动,甚至军事,任何的动作都足以引起社会的大地震.你认为他有什么理由完不成这些梦想吗?

 

原创粉丝点击