(1)JVM + one VM :
JAVA 是架構在 JVM 上面執行,而JVM又是架構在另一個 VM (ex : Microsoft OS)上面, 若認為Java 的速度比較慢, 這樣比較是不太正確的.
很多書籍或是技術文章, 都有提到.
但事實上 :
我常看到的是, 當另一個VM的環境(此 OS 所在的 Server)並不干淨的時候, 常會相對地影響 Java application執行的速度, 大部份認為Java 的速度比較慢的人並未看到這點, 或不想討論這點.
(2)架構正確的project vs 層疊架構的project :
若是架構正確的project架構, JSP 或 Java Application 的執行速率可以很快的; 反之,層疊架構的project常會搞垮一切。
檢驗 層疊架構的project 的方式有許多種, 我還有許多還沒學到的,不過我在三年前用過一種方式, 很好用.
試著將層疊架構的 project 中的某個簡單的功能獨立出來成為一個干淨的 Project,你會發現許多困難。
(PS : Java新手 [請勿] 在公司中公開對外嘗試, 私底下練習可以, 以免被較資深的人員責備.)
(PS 2: 這只是經驗談, 不涉及任何人和任何Java Base Project.)
(3)storeprocedure vs JDBC 的迷思 :
常有人說 storeprocedure 的"速度"較 JDBC SQL Statemenet 快,但我發現只比較後面的執行狀況好像也不完整
原因 :
A. storeprocedure 常在開發, 交接, 維護上, 花了許多專案的時間與人力的成本.
B. storeprocedure 也在改版上(例如 : 從 Microsoft 的版本轉為 DB2 的版本), 花了許多專案的時間與人力的成本.
C. storeprocedure 常有許多的隱含錯誤在裡面, 在被比較時, 這部份往往被忽略不看, 例如 : 在事務上, 因業務尚未被Online使用, 就沒測試得很完整.
這種方式的討論, 是反映[速度] 與 [速率] 問題上的差異.
(PS : I am not 看不起那些只會下 SQL 指令或是只會寫 store procedure 的人, 我只是單純的反映 Java 效率的問題)
(4) 不熟悉Web Application Container :
再回過來, 比如說, 一些不熟Java架構, 或不熟悉Web Application Container, 常會發生這種狀況.
我常看到有些人將 : IBM WebSphere 不知道怎麼搞的, 發生CPU的使用率達到100%, 然後回過頭來抱怨 Java 執行的速度太慢.