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,實在是讓我高興。