Java的就业前景!
Java的新面貌
在人们的心目中,Java主要是用在服务器端的Middle Tier的编程上。随着JDK-1.4的普 及,这样的时代也许已经成为历史,可以宣告结束了。让我们一起来看看Java的新面貌。
自JDK-1.4开始的新I/O(NIO)为Java程序员提供了新的高效率的I/O能力。效率的提高主 要来源于一个新的内存共享技术。传统上,Java内存来自JVM的堆,Native code(JNI)不 能很好的与Java code共享这些Java内存,因为Native code对这些Java内存的访问和使 用受到很多的限制。JDK-1.2对此略有改进,提供给Native code一点比较好的控制Java 内存的能力,但是并没有从根本上解决问题。JDK-1.4提供了一个特殊的包装技术,使得 任何一块系统内存在经过包装之后可以很好地被Native与Java code共享。这些系统内 存可以是JVM的堆以外的,甚至是JVM之外的内存,例如video memory,device controller memory,等等。这意味着,Java的I/O效率已经达到了与C相似的境界。换句话说,我们终 于可以用纯Java来编写复杂的,实时(real-time)的,3D,交互式的高级应用程序了。
Full-Screen Exclusive Mode也是JDK-1.4新增的功能。熟悉微软的DirectX的程序员也 许早已通晓Full-Screen Exclusive Mode,但对Java程序员来讲也许是个新的概念。 Full-Screen Exclusive Mode允许程序员暂停并跳过窗口系统的画图操作流程而直接对 屏幕进行画图操作。也就是说,程序不应再等待PAINT EVENT来执行paint方法,而是要主 动地,直接在屏幕上,执行画图操作了。这个技术应用在高效率作图以及游戏程序中。在 有些平台上, 一些先进的技术例如Page Flipping, Stereo Buffering等等,必须在 Full-Screen Exclusive Mode下才可以使用。
现代应用程序越来越多地在用户界面上使用优美的图像。Java2D早已为我们提供了丰富 多彩的高级图形和图像处理功能。JDK-1.4不但提高了它的效率,又为它改进和新增了很 多重要的功能,例如New Pipeline Architecture, Pluggable Image I/O Framework, Hardware Acceleration for Offscreen Images, New Java Print Service, Complete Porter-Duff Support,等等。这使得Java2D的能力更上一层楼。
Reflection是一个极其重要的Java技术。它使得我们可以在Runtime时去发掘任何一个 Object的定义,并且使用其定义。例如,在我们对某一个O一无所知的情况下,我们可以发 现O是C的一个实例,还发现它有某个方法M,我们可以执行这个M。Reflection是 JavaBean,Object Serialization等等重要Java技术的基础,也是各种Java工具赖以生存 的重要技术。JDK-1.4对Reflection的实现作了相当的改进,使得它的速度大大提高了数 倍。这对Java整体性能的提高有着重要的意义。
其他一些重要的,也许已为大家所熟悉的新功能,例如Logging API, Assertion Facility, Regular Expression, IPv6 Support, Preference API,XML Processing, JDBC 3.0, Unicode 3.0等等,都为我们展示了一幅美好的Java前景。
总而言之, Java以它精湛优美的设计思想,出人意料的发展速度而受到举世瞩目,并创造 了巨额的财富和庞大的就业机会。JDK-1.4宣告了Java主要用在服务器端的形象已经成 为历史。新的Java已经遨翔在更广阔的天地之间。
----------------解决方案--------------------------------------------------------
Java程序员就业前景
Java程序员是美国SUN公司国际认证的程序员,她是目前全球最受重视、最受欢迎的程序员资格认证之一,具备这一认证就可以获得极好的工作机会和丰厚待遇。
Java跨平台等许多特性使之成为当代成长最快的软件产品:它受到了大约150个许可证颁发机构、200所大学和50万开发者的拥戴;1000多个应用程序是用它编写的;有关它的书籍有800余种;Java开发套件的下载次数超过一百万次;Java BEANS? 开发套件的下载次数超过10万次;受到了全球所有主要计算机厂商的支持,而这一切都发生在其发表后的800天内;Java闯入企业计算的心脏正成为大众传媒舆论的推动力量,正在改变企业的计算环境。它通过为因特网商务提供安全和稳健平台的方式改变商业自身。Java计算是各行各业中倍受信赖的企业解决方案。独立于平台的Java计算环境可以降低企业的总成本,缩短产品上市周期,安全地扩展公司的网络。不少国家到中国寻求合作伙伴时,都把能否用Java进行编程作为合作的前提条件。
当前世界各地持有Java Programmer证书的人员供需差距极大,迫使企业不得不用高薪聘请Java程序员。因此,Java Programmer的含金量比一般的技术人员要高出很大一块。在美国、加拿大、澳大利亚、新加坡等发达国家和中等发达国家,持有Java Programmer认证证书的人年薪均在4-10万美金,而在国内持有Java Programmer认证的程序员也有极好的工作机会和很高的薪水。
----------------解决方案--------------------------------------------------------
java学习体悟java 出现在我们眼前,时间还很短,当他还只是一个半成品的时候,我们就被告知,java将成为软件发展的规范和希望. 然后,java出现了,jdk的出现,我们发现其实java并不习惯,因为我们已经适应了window下的visual编程,对于jdk这种编程方法已经很不喜欢,即使visual j++的出现,所增加的还不过是一个编辑环境.而且大家所熟悉的visual j++所支持的功能很少,可以说除了支持ActiveX之外,就是很纯粹的jdk1.1.这样的环境和功能,是根本不适合开发大型软件的所以,随着visual j++的兴起,java applet仿佛成为java唯一的功能了,几乎所有介绍java的书籍,网站,都被javaapplet充斥在许多人眼中,小应用程序是java唯一能做的事情了.可能还不如javascrip好用,当年如同耶稣降临似的java,仿佛成了鸡肋.用处的确不大.
但我初次接触java,我就被java 面向对象的思想,舒服的代码形式所吸引,对于面向对象的编程,大家都已经耳熟能详,c++好像成为面向对象的标准语言,而且delphi,vb,pb好像都挂上了面向对象的边了.但在我看来,delphi在设计上完全的面向对象,而且在他的内部,他很好的处理了对象之间的关系,但是在大家使用delphi的编程过程中,可以说已经被borland公司的对象束缚,例如面向对象有个很重要的应用,就是内部操作和外部界面的分离,也就是数据和界面的分离,但是使用过delphi的人都知道,这个在delphi中是很难的,因为你对界面的直接操作就直接写到了界面对象相应的操作中.很多人问我,为什么VC中为什么要初始化成一个Doc类,一个View类呢?我想,这就是没有理解面向对象的思想,为什么呢,就是界面实现和数据操作的分离嘛,可是很多人几乎不使用Doc类,把所有的数据操作都写到View中,因为这样免去了在View中操作Doc类的貌似复杂不必要的操作.至于vb,pb,我想大部分人在编程中,实在是很难体会面向对象的.因为这些语言和工具,本来就很不适合来实现对象操作.
如果你用过smalltalk语言,你会发现,什么是面向对象,所有的语句,甚至赋值,条件等等基本语句都是对象,学习smalltalk语言,很烦,即使你说自己对C++都是非常的熟练精通,为什么呢,因为我们绝大部分人使用C++,都没有真正体会到面向对象,当然在作项目的时候,也很难真正使用面向对象的方法.很希望大家有机会,学习使用一下smalltalk,因为这种语言能真正逼迫你体会面向对象.
说了这么多面向对象,有点跑题,现在我回到java,为什么我一再的强调面向对象呢,因为smalltalk毕竟不是真正高效率的编程语言,我用过很多编程工具,可以说几乎所有的我都作过东西,但是我看来,只有java的面向对象,编程方法,才是我最喜欢的.使用java编程,你会感觉到什么是对象,感觉到自己编写的程序原来也可以这样的有条理.这样的舒服.我和java斑竹lolo曾经讨论过这个感受,他也很有同样的感受.
但是,大家或许会说,java很好,但是他能干什么呢? 除了applet他能做什么?对于这个问题,我要告诉大家,他能做的东西很多,java到底能做什么,我使用java时间不是很长,但是我感到高兴的是,在这有限的时间里面,我接触的东西或许已经足够让我对java的前景产生了很大的兴趣和信心。
如果大家能到Sun公司主页上看看,会发现太多的东西可能是你听都没有听过的,jini,jmx,java3d,servlet,rmi……太多了,如此多的新技术,而且功能都是前所未有,起码是非常不同的。在国外,java程序员已经超过其他语言程序员,其中IBM公司就使用自己开发的visualage for java为法国开发了全国铁路管理系统。这个项目说明了java绝对不是只能开发小东西的,只能是applet,当然java的网络支持或许是所有编程语言中最强的了,他在网络的应用功能远远超过任何语言,大家或许很喜欢而且很熟练CGI的开发,但是servlet的功能却更标准化,使用java会让你感受到舒适。
jini可能很多人不知道是什么,我也不很清楚,但是自从lolo和我说了jini的思想的时候,我认为他,起码是他的思想绝对将在不远的将来充满我们生活的空间。
今天我看了一本xml方面的书,再一次感觉到了java的无处不在。xml的思想很新,非常的有发展前途,记得lolo曾经告诉我,xml将会得到极大的发展。我期待这样的一天。
我的方向是多媒体,所以我对例如3维效果非常感兴趣,以前我只能通过VC,C++ builder来编写出3维图形效果,如果将这种效果放在网上,即编写出支持3D效果的applet却不能,当然也有折中的方法,但那样作出来的效果很不好,也就是不是真正的3D图形,都是线条组成的,没有openGL作出来的那种虚拟效果,不过很快我就发现java突破了这个限制,sun公司的jdk for 3d(opengl)实现了对opengl的支持,作出来的效果虽然还达不到使用VC编写的那样复杂,但是再网上已经是非常难得了。
前些天我访问www.opengl.org,发现了jausoft公司制作的opengl支持的java类,他已经彻底的实现了几乎所有的opengl功能,但是唯一的缺陷是,他不能真正实现java的跨平台,他需要在机器上预先安装一个解释软件。
java对于声音,图象的处理,或许还不能达到专业效果,单对于他来说已经是非常不错了。
今天一个朋友的提醒让我想起来。java语言的跨平台是大家都公认的,但是不知道是否注意到使用java编程,有一个和别的编程语言很不一样的地方。就是虽然都是C++语言,但是VC和C++ builder之间的共享性受到了很大的限制,虽然C++ builder提供从MFC到自身支持的过程,但是具体实现上很难。
面向对象技术最核心的就是可重用性--reuseable,可是C++,object pascal等等都把这个优势降低了。可是java却做到了这一点,无论你使用jdk,jbuilder,Vj,visualagefor java,你都能做到对象之间的充分共享。甚至你可以在编程的时候,有时候选择这个工具,有时候选择那个工具,但是,这一切自由都不妨碍这个软件的整体统一性。如果你觉得Visual j++功能太差,可是jdk的编辑支持又不能忍受,你完全可以将jdk的class让vj来调试编译。你觉得visualagefor java的select控件对数据库的支持很好,你也可以将它导出,让jbuilder来调用,一切太自由了,自由意味着解放,你不必拘束于一种软件,你不必说我不会Visualage
而只了解jdk,这一切,在java里面都不是问题。java的reuseable,实在是让我高兴。
----------------解决方案--------------------------------------------------------
Java正影响着一代程序员
不管你对Java是怎样一个态度,有一点不可否认,Java是现在全球最时髦的开发工具之一。这是一个奇妙的混合体:它拥有一门叫做Java的语言,拥有一套庞大且完善的类库,内置了其他语言,需要靠库甚至是操作系统才能支持的功能,拥有一个虚拟机。不管把这个混合体叫做什么,总之,Java的出现,确实给整个程序界带了巨大的冲击,把它称之为革命还为时尚早,也许现在还无法准确评估Java为整个IT业带来的影响。但是有一点却毋庸置疑――Java将不可避免地影响一代程序员。
作为一名真正的职业程序员,也许真的需要评估一下Java在可以预见的一段时间里带给自己的影响。在美国,越来越多的应用是基于Java开发的。随着Java在企业应用的日臻完善,诞生了一批如ebny.com这样的重量级的应用方案,为此也打消了许多人对Java无法应用于大型企业级应用的顾虑。Weblogic――这个靠着appliction server起家的、提供纯Java应用的软件公司,几乎是在一夜之间崛起,股价青云直上,短短两三年间成为全球知名企业。而在国内,Java也已如火如荼。据调查,在未来几年内,将会出现20万个Java程序员职位需求,也许这将超过其他任何一种程序员的需求。
也许你开始对Java心动了,也许你经过深思熟虑将要开始Java的学习了,也许你已经读过Java的一两本入门的书了,现在要开始系统、基于开发的角度来学习Java,但是你都将面临一个问题,那就是以何种方式学习Java。
Java的职业培训课
对于国内绝大多数的程序员来说,自学可能是最好的方法。然而对于Java这么一个包含如此多东西的系统来说要想通过自学来理清整个系统脉络,并能运用它自如地开发系统,可以说具有相当的难度。程序员们学习某种语言或是某个系统可以算作是一种投资了,如何才能确保你获得最大的收益,一个有效合理的学习途径是必不可少的。在目前看来,上职业培训课是一种较为有效的方式。
为何职业培训课相对自学来说更加有效呢?可以从以下几方面考虑:首先在富有经验的培训教师的指导下,你可以避免走很多弯路,可以快速地获得许多专家级的经验,而这些如果靠自己来摸索,那将是一件很费时的事。其次这里拥有一个可供讨论的环境,这种培训课程上的学员,通常拥有相似知识背景,大家交流起来就非常的方便,不会存在什么障碍。
作为Java之父,Sun公司自然是不遗余力地推广Java。而职业培训课作为推广的一个重要手段,就显示出了其巨大价值,而培训本身就是一门巨大的产业。Sun公司自然在培训方面使足了全力。
其实Sun早在几年前就已在国内开展Java培训,通过与高校联办的十几个授权认证中心来进行培训。不过那时培训内容基本上都集中在J2SE即Java标准版的课程上,这些课程主要是帮助程序员了解并掌握Java的基本开发。不过随着Java版本的升级,Java本身也在发生一些重要的变化。Java应用领域逐渐扩大,企业级应用变得越来越普遍和重要。所以以前的培训内容已经不能完全适应今日的需求。Sun显然也看到了这一点,为了满足Java程序员们对日益深入的Java开发所需的技能,同时也能更近一步开拓这个有着巨大市场前景的培训市场,Sun重新强化完善了国内的培训体系。
让我们看一看Sun关于Java培训课程的结构图(见下)。作为Sun主推的4门课程,整个培训体系被分为3个层次:Programer(程序员)――Developer(开发人员)――Enterprise Architect(建筑师)。这有点类似我们传统的程序员――高级程序员――系统分析员的设置。这是一种非常灵活的培训体系,任何Java的开发人员可根据自己的兴趣和能力选择不同层次的课程,而无需从头学起,浪费不必要的时间和金钱。
对于初学者,或是一些想学习Java的非编程人员,如技术人员、Web开发人员、技术管理人员、系统管理员来说,SL--110就是一个很好的起点。通过对这门课程的学习,一个初学者能够很好地了解Java这个开发工具。
而对于一个拥有其他语言如C/C++设计经验的程序员,SL--275可能对你更适合,学习了这门课程,你将获得GUI、事件处理机制、例外处理、I/O、多线程、网络处理等实际的编程经验。
SL--285这门课程又上了一个台阶,它将使学员熟悉数据库服务器程序的设计方法,学会各种网络编程接口,如何调用其他语言的程序。完成了这门课程,程序员就有能力开发复杂的、产品级的Java程序。
SL--425作为Sun这次在国内主推的Java课程,也是Java培训课程中最高的一个层次。它主要是为高级开发人员以及体系结构决策人员所准备的,学员将熟练地进行体系结构的设计和描述,了解J2EE对体系结构的影响,以及如何应用J2EE来完成企业级的应用方案。
SL--275和SL--285这两门课程如果自己感觉还不错,还可以参加对应的Sun的Java认证考试。如考试通过,你将获得全球统一认证的资格证书。这在就业市场上是一个相当专业的资格认证。
但是任何的课程培训都不能代替程序员自己的学习,关键在于自己。一名出色的开发人员,是不会停止学习的!
Sun的Java职业培训课的三大好处:在教师的指导下,可以少走很多弯路。
可以快速地获得许多专家级的经验。
拥有一个可供讨论的环境。
----------------解决方案--------------------------------------------------------
对Java客户端的展望
Java是目前最优秀的软件开发语言之一,具有广泛的应用前景。由于它的结构简单,面向对象,跨平台等优越特性使它具有极强的生存力,有许多著名的厂商参与开发和支持,比如IBM,Oracle等。Java在桌面程序上应用已经不罕见,参与Java开发的公司很多都有相应的Java桌面应用。比较成功的有JBuilder,Oracle,DB2,JClass等,国内也有优秀的办公软件JReport。上述这些软件都是基于Java早期的GUI,Awt和Swing。Swing和Awt由于是Sun新开发出来的GUI系统,加上它比较庞大,占用大量内存,反应速度慢不受欢迎。就连众多的Java开发人员对它们也是敬而远之。自然的观点是:Java用在客户端是不可想象的。
目前,IBM已开发出了Java新的GUI,Swt,并把它贡献给了Eclipse。新的Swt基于JNI对本地窗口饰件的调用,并且在Window和Linux平台上首先实现。这样做的结果是:用户界面不再是用户不熟悉的Java风格------反应速度慢并且跟其他程序不兼容(比如鼠标滚轮失灵,金山词霸无法工作);程序包也变小了,相应的内存占用也少了。基于这种图形界面API的Java程序势必让人对Java客户端刮目相看。Eclipse就是一个例子。
如果把Swt和其他Java代码再本地化将是怎么样?------Jove和Jet都在夸耀这种技术,事实上它也是值得夸耀的。进一步编译成本地机器指令的Java图形界面程序将缩小到几百k,一张软盘就可以装得下,并且跟其它编译过的C或PASCAL一样在本机上可以直接运行。
Swt给Java开发者带来了福音,而Java程序的本机指令编译技术使它如虎添翼。随着时间的推移,将不会再有人争论Java是否适合于客户端。从这个意义上来推测,Java本身也将在某种程度上由一种技术退化为一门编程语言。用我们古人的话说,叫做“物极必反”,归咎于网络泡沫时期Sun对Java有些夸大的宣传。
依据IBM推出开放源码的项目Eclipse和与Instantiations(Jove的所有者)的合作伙伴关系,加上长期的虚拟机开发经验,估计下一代基于较小核心的虚拟机将首先由IBM推出。Instantiations的竞争对手Excelsior(Jet的拥有者)紧随着Sun的步伐------宣称能在两周内推出基于新版本较小核心虚拟机的Jet,事实上他们的版本更新同Sun的虚拟机一样快,遗憾的是Sun却好象没有把它当成自己的朋友:(。推陈出新的作品不一定会被大多数人认可,Awt/Swing有可能遭到抛弃。微软喜欢创新,虽然它屡试成功,这次推出Java的复制品C#的前景却不容乐观。在软件三国里,IBM有可能在Java方面与Sun结成联盟,在桌面软件市场上与微软竞争。
----------------解决方案--------------------------------------------------------
Java的强大人所共知,现在手机领域几乎就是Java的天下。网页中JSP有着Java的一席之地,而且Java有开发3D绘图的能力。Microsoft与Sun之间的斗争还会一直持续下去,或许直到有一方败北时才会结束。
----------------解决方案--------------------------------------------------------
我是一个刚刚开始学习Java的新手,我已前没有编程的基础,所以在学习JAVA的时候遇到了很多问题,但我不会放弃,
也希望各位大虾们能给我一点学JAVA的经验。。谢谢。。!!!!!!!!!
----------------解决方案--------------------------------------------------------
[此贴子已经被作者于2005-1-8 21:56:30编辑过]
----------------解决方案--------------------------------------------------------