Ⅰ java開發人員必須安裝什麼軟體
必須裝的,應該是jdk 和 IDE,IDE可以選擇 eclipse和idea,netbean現在也不錯。
現在的ide里一般都自帶了maven,這樣基本東專西都有了。
如果你要開發j2ee,那屬么還需要一個伺服器。或者使用maven調用jetty(一個簡單的web伺服器)。當然你需要有一定的maven知識。
如果你要使用資料庫,那麼可以裝資料庫。或者使用maven調用h2(一個簡單的java資料庫)。當然使用h2需要一定的maven知識。
至於開發框架之類,這不是軟體,而是jar包,這些可以通過maven配置來自動從網上獲取。
所以對你來說,裝好jdk和ide就好了。然後要看你怎麼做了,可以查看如何利用maven開發,也可以找找學習的書,看看書上要裝什麼軟體,再去裝什麼軟體。
Ⅱ 跪解:ssh框架的基本原理
Struts工作原理
MVC即Model-View-Controller的縮寫,是一種常用的設計模式。MVC 減弱了業務邏輯介面和數據介面之間的耦合,以及讓視圖層更富於變化。MVC的工作原理,如下圖1所示:
Struts 是MVC的一種實現,它將 Servlet和 jsP 標記(屬於 J2EE 規范)用作實現的一部分。Struts繼承了MVC的各項特性,並根據J2EE的特點,做了相應的變化與擴展。Struts的工作原理,
視圖:主要由JSP生成頁面完成視圖,Struts提供豐富的JSP 標簽庫: Html,Bean,Logic,Template等,這有利於分開表現邏輯和程序邏輯。
控制:在Struts中,承擔MVC中Controller角色的是一個Servlet,叫ActionServlet。ActionServlet是一個通用的控制組件。這個控制組件提供了處理所有發送到Struts的HTTP請求的入口點。它截取和分發這些請求到相應的動作類(這些動作類都是Action類的子類)。另外控制組件也負責用相應的請求參數填充 Action From(通常稱之為FromBean),並傳給動作類(通常稱之為ActionBean)。動作類實現核心商業邏輯,它可以訪問java bean 或調用EJB。最後動作類把控制權傳給後續的JSP 文件,後者生成視圖。所有這些控制邏輯利用Struts-config.xml文件來配置。
模型:模型以一個或多個java bean的形式存在。這些bean分為三類:Action Form、Action、JavaBean or EJB。Action Form通常稱之為FormBean,封裝了來自於Client的用戶請求信息,如表單信息。Action通常稱之為ActionBean,獲取從ActionSevlet傳來的FormBean,取出FormBean中的相關信息,並做出相關的處理,一般是調用Java Bean或EJB等。
流程:在Struts中,用戶的請求一般以*.do作為請求服務名,所有的*.do請求均被指向ActionSevlet,ActionSevlet根據Struts-config.xml中的配置信息,將用戶請求封裝成一個指定名稱的FormBean,並將此FormBean傳至指定名稱的ActionBean,由ActionBean完成相應的業務操作,如文件操作,資料庫操作等。每一個*.do均有對應的FormBean名稱和ActionBean名稱,這些在Struts-config.xml中配置。
核心:Struts的核心是ActionSevlet,ActionSevlet的核心是Struts-config.xml。
Struts優缺點
優點:
1.開源軟體,能更深入的了解其內部實現機制。
2.Taglib標記庫,靈活動用,能大大提高開發效率。
3.頁面導航使系統的脈絡更加清晰。通過一個配置文件,即可把握整個系統各部分之間的聯系,這對於後期的維護有著莫大的好處。尤其是當另一批開發者接手這個項目時,這種優勢體現得更加明顯。
4. 提供Exception處理機制 .
5. 資料庫鏈接池管理
6. Struts 的Action必需是thread-safe方式,它僅僅允許一個實例去處理所有的請求。所以action用到的所有的資源都必需統一同步,這個就引起了線程安全的問題。
缺點:
Taglib是Struts的一大優勢,但對於初學者而言,卻需要一個持續學習的過程,甚至還會打亂你網頁編寫的習慣,但是,當你習慣了它時,你會覺得它真的很棒。
Struts將MVC的Controller一分為三,在獲得結構更加清晰的同時,也增加了系統的復雜度。
ActionForms使用不便、無法進行單元測試(StrutsTestCase只能用於集成)
Spring的原理和優點
Spring真正的精華是它的loc模式實現的BeanFactory和AOP,它自己在這個基礎上延伸的功能有些畫蛇添足。
Spring
它是一個開源的項目,而且目前非常活躍;它基於IoC(Inversion of Control,反向控制)和AOP的構架多層j2ee系統的框架,但它不強迫你必須在每一層 中必須使用Spring,因為它模塊化的很好,允許你根據自己的需要選擇使用它的某一個模塊;它實現了很優雅的MVC,對不同的數據訪問技術提供了統一的 介面,採用IoC使得可以很容易的實現bean的裝配,提供了簡潔的AOP並據此實現Transcation Managment,等等
優點
a. Spring能有效地組織你的中間層對象,不管你是否選擇使用了EJB。如果你僅僅使用了Struts或其他為J2EE的 API特製的framework,Spring致力於解決剩下的問題。
b. Spring能消除在許多工程中常見的對Singleton的過多使用。根據我的經驗,這是一個很大的問題,它降低了系統的可測試性和面向對象的程度。
c. 通過一種在不同應用程序和項目間一致的方法來處理配置文件,Spring能消除各種各樣自定義格式的屬性文件的需要。曾經對某個類要尋找的是哪個魔法般的屬性項或系統屬性感到不解,為此不得不去讀Javadoc甚至源編碼?有了Spring,你僅僅需要看看類的JavaBean屬性。Inversion of Control的使用(在下面討論)幫助完成了這種簡化。
d. 通過把對介面編程而不是對類編程的代價幾乎減少到沒有,Spring能夠促進養成好的編程習慣。
e. Spring被設計為讓使用它創建的應用盡可能少的依賴於他的APIs。在Spring應用中的大多數業務對象沒有依賴於Spring。
f. 使用Spring構建的應用程序易於單元測試。
g. Spring能使EJB的使用成為一個實現選擇,而不是應用架構的必然選擇。你能選擇用POJOs或local EJBs來實現業務介面,卻不會影響調用代碼。
h. Spring幫助你解決許多問題而無需使用EJB。Spring能提供一種EJB的替換物,它們適用於許多web應用。例如,Spring能使用AOP提供聲明性事務管理而不通過EJB容器,如果你僅僅需要與單個資料庫打交道,甚至不需要一個JTA實現。
i. Spring為數據存取提供了一個一致的框架,不論是使用的是JDBC還是O/R mapping產品(如Hibernate)。
Spring確實使你能通過最簡單可行的解決辦法來解決你的問題。而這是有有很大價值的。
缺點:使用人數不多、jsp中要寫很多代碼、控制器過於靈活,缺少一個公用控制器
Hibernate的原理和優點。
Hibernate使用了J2EE架構中的如下技術:JDBC、JTA、JNDI。其中JDBC是一個支持關系資料庫操作的一個基礎層;它與JNDI和JTA一起結合,使得Hibernate可以方便地集成到J2EE應用伺服器中去。 在這里,我們不會詳細地去討論Hibernate API介面中的所有方法,我們只簡要講一下每個主要介面的功能,如果你想了解得更多的話,你可以在Hibernate的源碼包中的net.sf.hibernate子包中去查看這些介面的源代碼。下面我們依次講一下所有的主要介面: 核心介面 以下5個核心介面幾乎在任何實際開發中都會用到。通過這些介面,你不僅可以存儲和獲得持久對象,並且能夠進行事務控制。
Session介面 Session介面對於Hibernate 開發人員來說是一個最重要的介面。然而在Hibernate中,實例化的Session是一個輕量級的類,創建和銷毀它都不會佔用很多資源。這在實際項目中確實很重要,因為在客戶程序中,可能會不斷地創建以及銷毀Session對象,如果Session的開銷太大,會給系統帶來不良影響。
SessionFactory 介面 這里用到了一個設計模式――工廠模式,用戶程序從工廠類SessionFactory中取得Session的實例。 令你感到奇怪的是SessionFactory並不是輕量級的!實際上它的設計者的意圖是讓它能在整個應用中共享。典型地來說,一個項目通常只需要一個SessionFactory就夠了,但是當你的項目要操作多個資料庫時,那你必須為每個資料庫指定一個SessionFactory。 SessionFactory在Hibernate中實際起到了一個緩沖區的作用,它緩沖了Hibernate自動生成的SQL語句和一些其它的映射數據,還緩沖了一些將來有可能重復利用的數據。
Configuration 介面 Configuration介面的作用是對Hibernate進行配置,以及對它進行啟動。在Hibernate的啟動過程中,Configuration類的實例首先定位映射文檔的位置,讀取這些配置,然後創建一個SessionFactory對象。
Query和Criteria介面 Query介面讓你方便地對資料庫及持久對象進行查詢,它可以有兩種表達方式:HQL語言或本地資料庫的SQL語句。Query經常被用來綁定查詢參數、限制查詢記錄數量,並最終執行查詢操作。 Criteria介面與Query介面非常類似,它允許你創建並執行面向對象的標准化查詢。 值得注意的是Query介面也是輕量級的,它不能在Session之外使用。
Callback 介面 當一些有用的事件發生時――例如持久對象的載入、存儲、刪除時,Callback介面會通知Hibernate去接收一個通知消息。一般而言,Callback介面在用戶程序中並不是必須的,但你要在你的項目中創建審計日誌時,你可能會用到它。以下是它的策略介面:
· 主鍵的生成 (IdentifierGenerator 介面)
· 本地SQL語言支持 (Dialect 抽象類)
· 緩沖機制 (Cache 和CacheProvider 介面)
· JDBC 連接管理 (ConnectionProvider介面)
.事務管理 (TransactionFactory, Transaction, 和 TransactionManagerLookup 介面)
· ORM 策略 (ClassPersister 介面)
· 屬性訪問策略 (PropertyAccessor 介面)
· 代理對象的創建 (ProxyFactory介面)
Hibernate為以上所列的機制分別創建了一個預設的實現,因此如果你只是要增強它的某個策略的功能的話,只需簡單地繼承這個類就可以了,沒有必要從頭開始寫代碼。
Hibernate運行在兩種環境下:可管理環境和不可管理環境
· 可管理環境――這種環境可管理如下資源:池資源管理,諸如資料庫連接池和,還有事務管理、安全定義。一些典型的J2EE伺服器(JBoss、Weblogic、WebSphere)已經實現了這些。
· 不可管理環境――只是提供了一些基本的功能,諸如像Jetty或Tomcat這樣的servlet容器環境。
優點:
Hibernate是JDBC的輕量級的對象封裝,它是一個獨立的對象持久層框架。Hibernate可以用在任何JDBC可以使用的場合,例如Java應用程序的資料庫訪問代碼,DAO介面的實現類,甚至可以是BMP裡面的訪問資料庫的代碼。
Hibernate是一個和JDBC密切關聯的框架,所以Hibernate的兼容性和JDBC驅動,和資料庫都有一定的關系,但是和使用它的Java程序,和App Server沒有任何關系,也不存在兼容性問題。
Hibernate不能用來直接和Entity Bean做對比,只有放在整個J2EE項目的框架中才能比較。並且即使是放在軟體整體框架中來看,Hibernate也是做為JDBC的替代者出現的,而不是Entity Bean的替代者出現的,
Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱資料庫。
Hibernate可以應用在任何使用JDBC的場合。
Hibernate 使用 Java 反射機制 而不是位元組碼增強程序來實現透明性。
Hibernate 的性能非常好,因為它是個輕量級框架。 映射的靈活性很出色。
它支持各種關系資料庫,從一對一到多對多的各種復雜關系。
缺點:它限制您所使用的對象模型。(例如,一個持久性類不能映射到多個表)。
讓我再列一次我已經列n次的框架結構:
傳統的架構:
1) Session Bean <-> Entity Bean <-> DB
為了解決性能障礙的替代架構:
2) Session Bean <-> DAO <-> JDBC <-> DB
使用Hibernate來提高上面架構的開發效率的架構:
3) Session Bean <-> DAO <-> Hibernate <-> DB
就上面3個架構來分析:
1、內存消耗:採用JDBC的架構2無疑是最省內存的,Hibernate的架構次之,EB的架構1最差。
2、運行效率:如果JDBC的代碼寫的非常優化,那麼JDBC架構運行效率最高,但是實際項目中,這一點幾乎做不到,這需要程序員非常精通JDBC,運用Batch語句,調整PreapredStatement的Batch Size和Fetch Size等參數,以及在必要的情況下採用結果集cache等等。而一般情況下程序員是做不到這一點的。因此Hibernate架構表現出最快的運行效率。EB的架構效率會差的很遠。
3、開發效率:在有JBuilder的支持下以及簡單的項目,EB架構開發效率最高,JDBC次之,Hibernate最差。但是在大的項目,特別是持久層關系映射很復雜的情況下,Hibernate效率高的驚人,JDBC次之,而EB架構很可能會失敗。