關於兩個不同公司開發的兩個系統分別只支援MS JVM與Sun JVM的問題分析與解決方法的討論
關於兩個不同公司開發的兩個系統分別只支援MS JVM與Sun JVM的問題分析與解決方法的討論
背景說明:
================================================================================
某軟體開發公司B ==>>代替真正公司的名字
某某客戶 ==>> 代替真正的客戶公司名字
兩公司分別開發系統A與系統B,某軟體開發公司A開發系統A,某軟體開發公司B開發系統B
系統A實施與應用時間比系統B早一年多,但只支援IE預設的MS JVM
系統B只支援Sun JVM
================================================================================
================================================================================
以下是某軟體開發公司B對某軟體開發公司A開發的系統A的升級建議
================================================================================
關於某某客戶系統A升級的建議
自2005年1月系統B在某某客戶分公司試執行以來,發現某某客戶分公司的系統A與系統B二者不相容。具體表現為:某某客戶分公司的系統A的某些功能只能在Microsoft JVM下執行,而該JVM只支援1.1版本的JDK;系統B要求的JDK版本為1.3或1.4。就此問題,某軟體開發公司B組織人員專門對JDK各版本相容性進行深入研究,發現二者不相容的原因如下。
1. JDK各版本類的組織發生了改變,導致系統B客戶端程式執行在只支援低版本JDK的JVM下時(譬如說Microsoft JVM),該JVM會找不到相應的類。例如:系統B客戶端程式用到PrintJob類,該類在JDK1.1版本中是位於java.awt包下,而在JDK1.2版本以後新增了一個java.awt.print包,並將該類放在此包下面。這樣就導致即使以Microsoft JVM類的載入格式重新編譯系統B,在執行過程中也會報錯:找不到PrintJob類。
2. 高版本的JDK對低版本的某些類不但在功能進行了相應的增強,而且其執行機理也與低版本有較大不同。比如說系統B大量使用了Thread類, 1.1版本的JDK對該類的設計在安全性上存在嚴重問題,1.2及其以上版本的JDK對此進行了全面的改進。這樣就導致1.1版本的JDK編譯器編譯出來的客戶端程式不能執行在1.2或更高版本的JVM之下,1.2版本的JDK編譯器編譯出來的客戶端程式即使能執行在1.1版本的JVM之下,也可能會丟擲異常(比如說找不到該方法等等異常)。
透過對JDK各版本相容性的研究以及對系統B功能實現的綜合考慮,開發人員發現系統B向下相容(即透過修改WEB系統原始碼,使得客戶端程式可以在Microsoft JVM下執行)實現起來需要修改大量程式程式碼,工作量很大,並且系統安全性、可靠性都會出現問題(這是由JDK1.1本身缺陷造成的)。相比較而言,升級系統A,使其可以執行在較高版本的JVM之下就容易很多,也更合理,原因如下。
1. 高版本的JDK開發、編譯出來的客戶端程式往往更加穩定、更強壯,解決問題的手段也較為豐富。升級之後的系統A擴充套件功能將會變得相對容易。
2. Microsoft已經宣佈到2007年底推出的Internet Explorer將不再包含Microsoft JVM,即以後的IE都必須由使用者自己安裝相應的JAVA執行環境,也就是說日後系統A的升級的可能性非常大。
3. 升級系統A相對簡單,只要將相應的源程式用高版本的JDK重新編譯,編譯過程中編譯器可能會提示:找不到某些包,這樣只需修改相應的import路徑即可。工作量較小。
基於以上考慮,希望某某客戶分公司採納此意見,升級系統A,解決二者不相容的問題。在此過程中,某軟體開發公司B進行相應的配合。
某軟體開發公司B
2005-02-05
背景說明:
================================================================================
某軟體開發公司B ==>>代替真正公司的名字
某某客戶 ==>> 代替真正的客戶公司名字
兩公司分別開發系統A與系統B,某軟體開發公司A開發系統A,某軟體開發公司B開發系統B
系統A實施與應用時間比系統B早一年多,但只支援IE預設的MS JVM
系統B只支援Sun JVM
================================================================================
================================================================================
以下是某軟體開發公司B對某軟體開發公司A開發的系統A的升級建議
================================================================================
關於某某客戶系統A升級的建議
自2005年1月系統B在某某客戶分公司試執行以來,發現某某客戶分公司的系統A與系統B二者不相容。具體表現為:某某客戶分公司的系統A的某些功能只能在Microsoft JVM下執行,而該JVM只支援1.1版本的JDK;系統B要求的JDK版本為1.3或1.4。就此問題,某軟體開發公司B組織人員專門對JDK各版本相容性進行深入研究,發現二者不相容的原因如下。
1. JDK各版本類的組織發生了改變,導致系統B客戶端程式執行在只支援低版本JDK的JVM下時(譬如說Microsoft JVM),該JVM會找不到相應的類。例如:系統B客戶端程式用到PrintJob類,該類在JDK1.1版本中是位於java.awt包下,而在JDK1.2版本以後新增了一個java.awt.print包,並將該類放在此包下面。這樣就導致即使以Microsoft JVM類的載入格式重新編譯系統B,在執行過程中也會報錯:找不到PrintJob類。
2. 高版本的JDK對低版本的某些類不但在功能進行了相應的增強,而且其執行機理也與低版本有較大不同。比如說系統B大量使用了Thread類, 1.1版本的JDK對該類的設計在安全性上存在嚴重問題,1.2及其以上版本的JDK對此進行了全面的改進。這樣就導致1.1版本的JDK編譯器編譯出來的客戶端程式不能執行在1.2或更高版本的JVM之下,1.2版本的JDK編譯器編譯出來的客戶端程式即使能執行在1.1版本的JVM之下,也可能會丟擲異常(比如說找不到該方法等等異常)。
透過對JDK各版本相容性的研究以及對系統B功能實現的綜合考慮,開發人員發現系統B向下相容(即透過修改WEB系統原始碼,使得客戶端程式可以在Microsoft JVM下執行)實現起來需要修改大量程式程式碼,工作量很大,並且系統安全性、可靠性都會出現問題(這是由JDK1.1本身缺陷造成的)。相比較而言,升級系統A,使其可以執行在較高版本的JVM之下就容易很多,也更合理,原因如下。
1. 高版本的JDK開發、編譯出來的客戶端程式往往更加穩定、更強壯,解決問題的手段也較為豐富。升級之後的系統A擴充套件功能將會變得相對容易。
2. Microsoft已經宣佈到2007年底推出的Internet Explorer將不再包含Microsoft JVM,即以後的IE都必須由使用者自己安裝相應的JAVA執行環境,也就是說日後系統A的升級的可能性非常大。
3. 升級系統A相對簡單,只要將相應的源程式用高版本的JDK重新編譯,編譯過程中編譯器可能會提示:找不到某些包,這樣只需修改相應的import路徑即可。工作量較小。
基於以上考慮,希望某某客戶分公司採納此意見,升級系統A,解決二者不相容的問題。在此過程中,某軟體開發公司B進行相應的配合。
某軟體開發公司B
2005-02-05
相關文章
- 關於兩個簡單問題的分析
- [效能]【JVM】關於JVM記憶體的N個問題JVM記憶體
- [技術討論]系統間呼叫與邊界類的差別——被混淆的兩個概念
- 今天解決的兩個問題
- 關於用棧和佇列分別解決走迷宮問題的方法討論(參與者:陳卓,毛敏磊)佇列
- 關於dcat-admin的兩個問題...
- 關於JVM 記憶體的 N 個高頻面試問題!JVM記憶體面試
- HTML中兩個tabs導航衝突問題的解決方法HTML
- 關於一級域名相同的兩個系統單點登入問題
- 兩個系統故障解決薦
- Abaqus與Ansys的區別和不同, 兩種軟體哪個更好?
- 兩個關於許可權設定的問題思考
- 關於JVM的組成與classloaderJVM
- Go的http庫處理multipart的兩個問題解決GoHTTP
- C#開發的兩個基本程式設計原則的深入討論(轉)C#程式設計
- AJAX 開發的兩種不同的方法(轉)
- JVM 異常退出的問題解決JVM
- 關於解決問題的幾個段位
- 解決兩個難懂的安全性問題(轉)
- Xcode build慢的兩個解決方法XCodeUI
- [技術討論]網路軟體開發的bug分析與公司開發管理問題之網易篇(有更新)
- 關於系統效能的一個問題
- banq,你好問一個關於《java使用系統開發指南》的問題Java
- 解決Few-shot問題的兩大方法:元學習與微調
- 資料結構與演算法系列(二):關於陣列,我想探討兩個問題資料結構演算法陣列
- 和開發同學討論的一個技術問題
- 討論個有關模組化設計的問題
- iOS開發中兩個常見問題的處理iOS
- 關於NULL的兩個計算Null
- 關於 ulimit 的兩個天坑MIT
- 一個關於/root/.gvfs的問題解決?
- Delphi中兩個BUG的分析與修復 (轉)
- [技術討論]關於低耦合開發的討論
- 兩個不同的web系統之間可以呼叫程式嗎Web
- JRE 與 JVM 的關係JVM
- 關於敏捷開發的兩道選擇題敏捷
- 重構系統不得不考慮的兩個問題
- 一個關於月球車的筆試題--求討論筆試