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,实在是让我高兴。