最近要在一個項目中使用java, 本來是用.net開發的, 可是驗收時用戶要求用java平臺,只好進行移植工作了. 一直使用的是.net開發, JAVA只是關注, 沒有深入研究, 等實際應用時才發現自己水平有限, 問題一堆.
把最近碰上的問題做些整理:
使用JAVA平臺的問題:
1. 開發工具太多, 什么Eclipse, jbuilder等,各有不同, 讓人熟悉就花時間了, 本為以為對JB比較熟悉,又有2006版本了, 就用它吧, 可是才兩天, 就發現自己的代碼文件中的中文變為亂碼了, 當然網上有一堆解決方案, 只是心里不爽, 直接不用了, 改為eclipse了, 操作界面不是很熟悉, 與VS.NET IDE還是有不少區別, 只是用多了自然就熟悉了,
又從網上當了一堆插件, 什么tomcat, xml編輯器, 沒有用myeclipse, 雖然支持JSP,以前用過一下, 也不太好用, 其它的就沒找到什么好東西了, 時間也不允許, 至少現在可以調度JAVA代碼了, JSP的調試再說吧.
2. 開始整的時候,發現自己在WEB開發方面熟悉的是VS的ASPX事件模型, 反而不知道如何處理JSP了, 只好使用以前ASP的模式, 使用form提交, 感覺真是太落伍了, 雖然現在有許多AJAX之類的東西, 也支持客戶端事件模型, 實在沒時間研究這些東西了. 先做出來再說.
數據庫連接類使用了以前jive中的幾個類, 支持在xml中配置連接等, 再自己寫了一個類, 從XML中讀取SQL語句, 差不多能用.
3。在網上搜索了一把,未找到在eclipse中對web service支持比較好的plugin,發現版本都比較低,似乎久未更新了,JB下到是有不錯的設計和編譯界面,只是JB其它太爛。
字符集問題:
使用java首先就要碰上一個中文字符的顯示和處理問題, 這些問題總是很煩, 要對request進行編碼才能解決.
既然使用非MS平臺, 數據庫可能就不會用到mssql server了, 使用mysql, 發現要移植以前的數據還是比較容易, 但mysql的驅動實在不好弄, 剛開始使用純JDBC的驅動, 結果發現在中文字符的處理上始終有問題, 只好
網上查原因, 發現jdbc驅動的版本太低, 在判斷中文字符上有問題, 升級驅動程序, 可以插入和顯示了, 但SQL中是中文, 可是進了數據庫就是亂碼, 試了N遍也不行, 只好改為jdbc-odbc.
但接下來在執行batch sql時又報錯了, 說mysql odbc driver 的SQL語法錯, 檢查了半天, SQL也能在mysql中執行的, 就是不能通過JAVA提交執行. 用的是mysql 5.0.X, 支持unicode 的編碼建表. 最后只能采用一個折衷的辦法,自己寫一個批量執行SQL的類,采用“;”分隔多個SQL,在調用時仍然一行一行的執行,郁悶。
最終的字符集解決辦法:
頁面上要設置字符集的輸出格式,如GBK或GB2312,另外,如果使用統一的包含文件定義輸出字符集,還是不行,必須在每個頁面中單獨定義,也可能是我的INCLUDE方式不對;
數據庫連接字符串中也要設置編碼;
在傳遞數據到DB的SQL還要對中文進行編碼;
String key = new String(request.getParameter("txtKey").getBytes("ISO8859_1"));
最后還有一個問題是,如果TOMCAT編譯JSP文件生成的JAVA文件有亂碼,那么在訪問的時候頁面上總是要報錯,什么"delete tokens"之類的,此時要刪除掉tomcat\work目錄下的中間編譯代碼才行;
控件及常用庫
WEB控件, 網上有一堆各種各樣的lib和控件, 但這些東西太浪費時間, 光是上網找就比較花時間了, 下回來試用也有各種各樣的問題,
每個控件有自己的特色, 而且每個總是滿足了這個,滿足不了那個需求, 要都滿足, 還是要收費的才行, 畢竟天下沒有多少免費的午餐;
主要有幾個:
1。數據顯示表格控件,應該能支持排序,有緩存機制,能分頁,能設置格式,支持ResultSet或ArrayList之類的,還要有導出excel等功能;最好要能簡單使用。
2。圖表控件,最有名的當然是cewolf/jfreechart,只是要使用它自己定義的DatasetProducer,不能直接使用ResultSet,也是個麻煩事,不過的確是很不錯的控件了。
小結
1。經過這次移植,發現JAVA還是有許多很牛的地方,采用hashmap來緩存數據,效率的確很不錯,只是用得太多,缺乏管理機制,有點混亂了,下一階段再重構一下,形成一個管理框架最好;
2。eclipse開發的確很不錯,與vs ide差別是比較大,只是使用習慣了之后發現其功能強大,而且可以找些plugin來擴展功能,估計我只是看到了點皮毛而已。
3。在JAVA下開發,使用Javascript太多,還沒找到更好解決辦法,水平有限;
4。與另一個人一起開發,大家的編程風格和代碼不夠規范,使用了一些重復的類和方法,這在后期維護是個工作,時間太緊,項目總是這樣,就沒得多少提高了;
個人水平實在有限,上面只是一面之詞,項目月底才結束,有什么變更再補充。