本文目錄一覽:
- 1、網絡請求框架-OkHttp原理解析
- 2、作為一個JAVA程序員, 應該掌握哪些知識, 目前, 比較流行的java開發框架有哪些,
- 3、java框架有哪些常用框架?
- 4、java有哪些框架需要學習呢?
- 5、Java目前主流框架都有哪些?
網絡請求框架-OkHttp原理解析
okhttp是square公司貢獻的一個處理網絡請求的開源框架,是目前Android開發使用最廣泛的一個網絡框架,從Android4.4開始,httpURLconnection的底層實現採用的就是okhttp。內部實現就是利用java基礎,對socket進行封裝,實現http通信。最重要的兩個關鍵點就是分發器和5個攔截器。
分發器 就是內部維護隊列和線程池,完成請求分配,總結就是用於對異步任務加入隊列管理,然後判斷條件,控制數量,加入線程池執行異步請求任務。
五個默認攔截器 就是利用責任鏈模式對網絡請求進行層層處理,完成整個請求過程,簡單總結如下。
1.橋接攔截器對用戶發出的請求添加缺少的請求配置字段,比如keep-alive等
2.緩存攔截器就是查詢有沒有符合判斷條件的已緩存的網絡請求,執行復用,直接返回response
3.連接攔截器就是創建請求,加入連接器 或者訪問連接池,根據條件判斷,是否能懟已創建的tcp請求進行復用
4.請求服務器攔截器就是對scoket進行操作,請求網絡訪問服務器,返回response,
5.重試和重定向攔截器就是對返回的response進行code判斷,決定是否要重試或者重定向操作。
1.支持http2.0版本,並且允許對同一主機的所有請求共享一個套接字
2.即使不是http2.0版本,通過連接池,減少請求延遲
3.默認使用Gzip 壓縮數據
4.響應緩存,避免重複請求網絡
最簡單的http請求案例
1.利用建造者模式構建okHttpClient實例對象,構建過程中可以動態配置參數,請求時間,響應時間,緩存信息等。
2.創建Request對象,設置請求方式,鏈接地址,參數等信息。
3.把request對象,傳給client,通過newCall函數,得到RealCall對象。
4.RealCall 分為同步和異步執行
5.同步執行時,分發器只是做個記錄,把請求任務加到隊列中,然後直接通過攔截器訪問服務器,返回response。
6.異步執行
6.1先對異步任務進一步封裝,把任務放到AsyncCall對象中
2.分發器 把 封裝後的異步任務 添加到等待運行的隊列中
7.getResponseWithInterceptorChain 通過攔截器,獲取response
okhttp 默認提供5個攔截器 重試重定向攔截器,橋接攔截器,緩存攔截器,連接攔截器,訪問服務器攔截器。還可以自定義攔截器。
自定義攔截器分為應用攔截器(通過addInterceptor 添加)和網絡攔截器(通過addNetworkInterceptor攔截)
攔截器採用責任鏈的設計默認,讓請求者和處理者解耦,最終請求從前往後,響應從後往前。
首先先判斷用戶是否取消了請求,如果沒有取消,就把請求交個橋接攔截器。
在獲得響應結果response的時候根據響應碼,判斷是否需要重試或者重定向, 重試不限制次數,重定向最多20次 ,如果需要重試或者重定向,那麼會再一次重新執行所有攔截器。
有如下幾種情況不會重試:IO異常,線路異常,配置client實例時配置不允許重試,協議異常,證書異常等等。
先獲取用戶發送的請求,判斷條件用戶是否已經配置過請求頭字段,若用戶沒有配置,則將http協議必備的請求頭字段補齊,比如Content-Type,Content-Length等,然後交給下一個攔截器。
在獲得響應結果response之後,調用保存cookie的接口(也可以在配置client的時候,設置cookjar進行cookie回調數據),並且解析gzip數據
獲取結果之後,對cookie進行保存,對返回的數據進行gzip解壓
就是根據緩存策略從緩存中查找是否有合適的緩存response,如果有合適的緩存,直接返回給請求任務,不在繼續執行後面的攔截器。
獲得響應結果response後,根據條件判斷,決定是否要緩存。
維護一個連接池,負責對連接的服務。在把請求交給下一個攔截器之前。會先在連接池中找到一個合適的連接(滿足適配條件相同,並且沒有正在被使用)或者新建一個連接,並且接入連接池,獲得對應的socket流,把請求交給下一個攔截器。獲得response結果後不會進行額外的處理。
連接池, 也稱之為對象池,主要用來存放request請求連接,內部維護了一個LinkedQueue隊列用來存放請求。在添加新的請求對象時,都會執行一個周期性任務,用以對連接池進行清理操作。
1.隊列長度超過5,清理最近未被使用連接,LRE算法
2.存儲的連接,5分鐘未被複用,清理
拿到上一個攔截器返回的請求,真正的與服務器進行通信,向服務器發送數據,解析讀取響應的數據,返回給上一個攔截器。
1.創建request =OkHttpClient=RealCall()
2.同步執行 ,分發器添加同步任務,執行攔截器,訪問服務器,返回reponse,觸發異步分發流程。
3.異步執行 ,封裝任務= AsyncCall ,實現runnable接口。添加任務到異步任務等待隊列,執行分發任務,判斷異步任務是否能加入正在執行的異步任務隊列,滿足兩個條件
同時執行的異步任務數量不得大於64個
對同一個主機的訪問任務,最多不得大於5個
4.加入正在執行的異步任務隊列,通過線程池執行任務,經過5個默認攔截器訪問服務器,返回response,執行異步任務分發。
分發器工作 分為同步任務和異步任務兩種
同步任務 就是把任務加入同步任務隊列,加個標記,執行結束之後,觸發異步任務的分發操作。
異步任務 先封裝任務到asyncCall對象,實現了runnable接口。把任務加入等待執行隊列,執行分發操作。
先遍歷等待任務隊列,判斷是否符合加入正在運行的異步任務隊列,要同時滿足兩個條件。
同時執行的異步任務數量不得大於64個
對同一個主機的訪問任務,最多不得大於5個
當滿足條件後,從等待隊列中刪除任務,把任務加入正在執行的隊列中,通過自定義的線程池,執行任務,任務執行結束後,再次執行分發操作。
攔截器採用了責任鏈設計默認,讓請求者和執行者解耦,請求者只需要將請求發給責任鏈即可,無需關心請求過程和細節。okHttp 默認有5個攔截器,重試重定向攔截器,橋接攔截器,緩存攔截器,連接攔截器,請求服務攔截器。工作細節參考上面攔截器原理分析部分
1.位置的關係,應用攔截器 放在責任鏈最頂端,網絡攔截器放在責任鏈倒數第二的位置。所以應用攔截器 最先攔截,最後響應,網絡攔截器 倒數第二攔截,第二響應。如果打印請求日誌的情況,應用攔截器打印的是用戶請求信息,經過重試重定向,橋接,緩存,鏈接 等攔截器的層層包裝,網絡攔截器打印的是實際請求的信息。
2.應用攔截器一定會被執行,網絡攔截器不一定被執行。
利用連接池,緩存所有的有效連接對象。
清理機制:垃圾連接
1.超過5分鐘沒有用過的鏈接
2.超過5個閑置鏈接後,從最久閑置的鏈接開始執行清理(LRU)
作為一個JAVA程序員, 應該掌握哪些知識, 目前, 比較流行的java開發框架有哪些,
java基礎,三大主流數據庫mysql,orcale,sql server;然後是j2ee的相關知識,也就是java開發框架。
Spring Framework 【Java 開源JEE框架】
Spring是一個解決了許多在J2EE開發中常見的問題的強大框架。
Spring提供了管理業務對象的一致方法並且鼓勵了注入對接口編程而不是對類編程的良好習慣。Spring的架構基礎是基於使用JavaBean屬性的
Inversion of
Control容器。然而,這僅僅是完整圖景中的一部分:Spring在使用IoC容器作為構建完關注所有架構層的完整解決方案方面是獨一無二的。
Spring提供了唯一的數據訪問抽象,包括簡單和有效率的JDBC框架,極大的改進了效率並且減少了可能的錯誤。Spring的數據訪問架構還集成了
Hibernate和其他O/R mapping解決方案。Spring還提供了唯一的事務管理抽象,它能夠在各種底層事務管理技術,例如JTA或者
JDBC事務提供一個一致的編程模型。Spring提供了一個用標準Java語言編寫的AOP框架,它給POJOs提供了聲明式的事務管理和其他企業事務
–如果你需要–還能實現你自己的aspects。這個框架足夠強大,使得應用程序能夠拋開EJB的複雜性,同時享受着和傳統EJB相關的關鍵服務。
Spring還提供了可以和IoC容器集成的強大而靈活的MVC Web框架。【SpringIDE:Eclipse平台下一個輔助開發插件】.
WebWork 【Java開源Web開發框架】
WebWork是由OpenSymphony組織開發的,致力於組件化和代碼重用的拉出式MVC模式J2EE
Web框架。WebWork目前最新版本是2.1,現在的WebWork2.x前身是Rickard
Oberg開發的WebWork,但現在WebWork已經被拆分成了Xwork1和WebWork2兩個項目。
Xwork簡潔、靈活功能強大,它是一個標準的Command模式實現,並且完全從web層脫離出來。
Xwork提供了很多核心功能:前端攔截機(interceptor),運行時表單屬性驗證,類型轉換,強大的表達式語言(OGNL – the
Object Graph Notation Language),IoC(Inversion of Control倒置控制)容器等。
WebWork2建立在Xwork之上,處理HTTP的響應和請求。WebWork2使用ServletDispatcher將HTTP請求的變成
Action(業務層Action類),
session(會話)application(應用程序)範圍的映射,request請求參數映射。WebWork2支持多視圖表示,視圖部分可以使用
JSP, Velocity, FreeMarker,
JasperReports,XML等。在WebWork2.2中添加了對AJAX的支持,這支持是構建在DWR與Dojo這兩個框架的基礎之上.
【EclipseWork:用於WebWork輔助開發的一個Eclipse插件】
Struts 【Java開源Web開發框架】
Struts是一個基於Sun
J2EE平台的MVC框架,主要是採用Servlet和JSP技術來實現的。由於Struts能充分滿足應用開發的需求,簡單易用,敏捷迅速,在過去的一年中頗受關注。Struts把Servlet、JSP、自定義標籤和信息資源(message
resources)整合到一個統一的框架中,開發人員利用其進行開發時不用再自己編碼實現全套MVC模式,極大的節省了時間,所以說Struts是一個非常不錯的應用框架。【StrutsIDE:用於Struts輔助開發的一個Eclipse插件】
Hibernate 【Java開源持久層框架】
Hibernate是一個開放源代碼的對象關係映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。
Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序實用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。Eclipse平台下的Hibernate輔助開發工具:【Hibernate
Synchronizer】【MiddlegenIDE】
Quartz 【Java開源調度框架】
Quartz是OpenSymphony開源組織在Job
scheduling領域又一個開源項目,它可以與J2EE與J2SE應用程序相結合也可以單獨使用。Quartz可以用來創建簡單或為運行十個,百個,甚至是好幾萬個Jobs這樣複雜的日程序表。Jobs可以做成標準的Java組件或
EJBs。Quartz的最新版本為Quartz 1.5.0。
Velocity 【Java開源模板引擎】
Velocity是一個基於java的模板引擎(template engine)。它允許任何人僅僅簡單的使用模板語言(template
language)來引用由java代碼定義的對象。當Velocity應用於web開發時,界面設計人員可以和java程序開發人員同步開發一個遵循MVC架構的web站點,也就是說,頁面設計人員可以只關注頁面的顯示效果,而由java程序開發人員關注業務邏輯編碼。Velocity將java代碼從web頁面中分離出來,這樣為web站點的長期維護提供了便利,同時也為我們在JSP和PHP之外又提供了一種可選的方案。
Velocity的能力遠不止web站點開發這個領域,例如,它可以從模板(template)產生SQL和PostScript、XML,它也可以被當作一個獨立工具來產生源代碼和報告,或者作為其他系統的集成組件使用。Velocity也可以為Turbine
web開發架構提供模板服務(template
service)。Velocity+Turbine提供一個模板服務的方式允許一個web應用以一個真正的MVC模型進行開發。【VeloEclipse
:Velocity在Eclipse平台下的一個輔助開發插件】
IBATIS 【Java開源持久層框架】
使用ibatis 提供的ORM機制,對業務邏輯實現人員而言,面對的是純粹的Java對象, 這一層與通過Hibernate 實現ORM
而言基本一致,而對於具體的數據操作,Hibernate 會自動生成SQL 語句,而ibatis 則要求開發者編寫具體的SQL
語句。相對Hibernate等 「全自動」ORM機制而言,ibatis
以SQL開發的工作量和數據庫移植性上的讓步,為系統設計提供了更大的自由空間。作為「全自動」ORM 實現的一種有益補充,ibatis 的出現顯
得別具意義。
Compiere ERPCRM 【Java開源ERP與CRM系統】
Compiere
ERPCRM為全球範圍內的中小型企業提供綜合型解決方案,覆蓋從客戶管理、供應鏈到財務管理的全部領域,支持多組織、多幣種、多會計模式、多成本計算、多語種、多稅制等國際化特性。易於安裝、易於實施、易於使用。只需要短短几個小時,您就可以使用申購-採購-發票-付款、報價-訂單-發票-收款、產品與定價、資產管理、客戶關係、供應商關係、員工關係、經營業績分析等強大功能了。
Roller Weblogger 【Java開源Blog博客】
這個weblogging
設計得比較精巧,源代碼是很好的學習資料。它支持weblogging應有的特性如:評論功能,所見即所得HTML編輯,TrackBack,提供頁面模板,RSS
syndication,blogroll管理和提供一個XML-RPC 接口。
Eclipse 【Java開源IDE】
Eclipse平台是IBM向開發源碼社區捐贈的開發框架,它之所以出名並不是因為IBM宣稱投入開發的資金總數
—4千萬美元,而是因為如此巨大的投入所帶來的成果:一個成熟的、精心設計的以及可擴展的體系結構。
XPlanner 【Java開源項目管理】
XPlanner 一個基於Web的XP團隊計劃和跟蹤工具。XP獨特的開發概念如iteration、user
stories等,XPlanner都提供了相對應的的管理工具,XPlanner支持XP開發流程,並解決利用XP思想來開發項目所碰到的問題。
XPlanner特點包括:簡單的模型規劃,虛擬筆記卡(Virtual note cards),iterations、user
stories與工作記錄的追蹤,未完成stories將自動迭代,工作時間追蹤,生成團隊效率,個人工時報表,SOAP界面支持。
HSQLDB 【Java開源開源數據庫】
HSQLDB(Hypersonic SQL)是純Java開發的關係型數據庫,並提供JDBC驅動存取數據。支持ANSI-92 標準
SQL語法。而且他占的空間很小。大約只有160K,擁有快速的數據庫引擎。
Liferay 【Java開源門戶系統】
代表了完整的J2EE應用,使用了Web、EJB以及JMS等技術,特別是其前台界面部分使用Struts
框架技術,基於XML的portlet配置文件可以自由地動態擴展,使用了Web Services來支持一些遠程信息的獲取,使用 Apahce
Lucene實現全文檢索功能。
主要特點:
提供單一登陸接口,多認證模式(LDAP或 SQL);
管理員能通過用戶界面輕鬆管理用戶,組,角色;
用戶能可以根據需要定製個性化的portal layout;
能夠在主流的J2EE應用服務器上運行,如JBoss+Jetty/Tomcat,JOnAS;
支 持主流的數據庫,如PostgreSQL,MySQL;
使用了第三放的開源項目,如Hibernate, Lucene, Struts;
支持包括中文在內的多種語言;
採用最先進的技術 Java, EJB, JMS, SOAP, XML;
JetSpeed 【Java開源門戶系統】
Jetspeed是一個開放源代碼的企業信息門戶(EIP)的實現, 使用的技術是Java和XML. 用戶可以使用瀏覽器,
支持WAP協議的手機或者其它的設備訪問Jetspeed架設的信息門戶獲取信息. Jetspeed扮演着信息集中器的角色,
它能夠把信息集中起來並且很容易地提供給用戶.
Jetspeed具有如下的特徵:
即將成為標準化的Java Portlet API
基於模板的布局, 包括JSP和Velocity
通過開放的內容同步技術支持遠程XML 內容交換
定製默認的主頁
使用數據庫進行用戶認證
內存緩存技術, 加快頁面的響應
通 過Rich Site Summary技術, 支持同步內容
和Cocoon, WebMacro, Velocity集成.
Wireless Markup Language (WML) 支持
使用XML格式的配置文件註冊portlet.
完整的 Web Application Archive (WAR) 支持
Web應用程序開發的基礎設施
可以在本地緩 存遠程內容
與Avantgo同步
可移植到所有支持JDK1.2和Servlet 2.2的平台
與 Turbine模塊和服務集成
可以根據用戶, 安裝媒體類型和語言的不同設定, 產生不同的個性化服務
持續化服 務使得所由的portlet能夠容易的存儲每個用戶的狀態, 頁面和portlet
使用皮膚技術使得用戶可以選擇portlet的顏 色和顯示屬性
自定義功能是的管理員可以選擇portlet以及定義個人頁面的布局
在數據庫中存儲PSML
通 過Jetspeed的安全portlets管理用戶, 組,角色和權限
基於角色對訪問portlet進行控制
JOnAS 【Java開源應用服務器】
JOnAS是一個開放源代碼的J2EE實現,在ObjectWeb協會中開發。整合了Tomcat或Jetty成為它的Web容器,以確保符合Servlet
2.3和JSP 1.2規範。JOnAS服務器依賴或實現以下的Java API:JCA、JDBC、JTA
、JMS、JMX、JNDI、JAAS、JavaMail 。
JFox3.0 【Java開源應用服務器】
JFox 是 Open Source Java EE Application Server,致力於提供輕量級的Java
EE應用服務器,從3.0開始,JFox提供了一個支持模塊化的MVC框架,以簡化EJB以及Web應用的開發!
如果您正在尋找一個簡單、輕量、高效、完善的Java EE開發平台,那麼JFox正是您需要的。
JFox 3.0 擁有以下特性:
重 新設計的 IoC 微內核,融入 OSGi 模塊化思想
設計成嵌入式架構,能夠和任何 Java Web Server集成部署
支 持 EJB3,JPA規範,支持容器內和容器外兩種方式運行EJB和JPA組件
支持 EJB 發佈成Web Service
采 用 JOTM()提供事務處理,支持兩階段提交 (2PC)
採用 XAPool() 提供 XA
DataSource,支持智能連接池管理
內置 MVC 框架,實現自動Form
Mapping,Validator,Uploading等功能,支持JSP/Velocity/Freemarker頁面引擎,並支持直接在
Action中注入EJB
支持多應用模塊部署,讓中大型應用充分享受模塊化開發帶來的優勢
提供 Manager 管理模塊,可以查看和管理各種運行時參數
提供根據 JFox 特色重寫的 Petstore 應用模塊
EasyJWeb 【Java開源Web開發框架】
EasyJWeb是基於java技術,應用於WEB應用程序快速開發的MVC框架,框架設計構思來源於國內眾多項目實踐,框架充分借簽了當前主要流行的開源Web框架(Struts、JSF、Tapestry
、Webwork),吸取了其優點及精華,利用Velocity作為模板頁面引擎,是一個實現了頁面及代碼完全分離的MVC開發框架。是一個能實現中小型
Web應用系統快速開發的簡易Web框架。
通過EasyJWeb
Tools提供的配套開發工具,可以實現基於EasyJWeb框架的Web應用快速開發,包括常用應用軟件的代碼自生成、數據庫添刪改查(CRUD)代碼生成、自動頁面模版生成、配置文件管理等。
框架特點:
零配文件置支持。以前我們每接觸一個框架,開始總都要被
他的配置文件折騰一番。EasyJWeb實現零配置支持,可以不寫一句配置文件就在框架基礎上構建你的運用。(適合小型網站系統)。
簡 易的模板頁面設計支持:放棄使用jsp,使用簡單Velocity腳本語言作為頁面模板。
頁面程序完全分離:實現顯示頁面與程序邏輯 的完全分離,克服了傳統jsp頁面難於維護的問題。
基於頁面組件的框架。靈活的頁面組件配置,可以直接通過配置文件設置字段級的事件 組件。
快速開發支持:通過EasyJWeb
Tools,可以自動生成應用軟件模板代碼,定製並管理自己的J2EE代碼模板,代碼生成模板支持最流行的實用Java開發框架(如hibernate、
Spring等)實現快速開發。
Tapestry 【Java開源Web開發框架】
Tapestry是一個開源的基於servlet的應用程序框架,它使用組件對象模型來創建動態的,交互的web應用。一個組件就是任意一個帶有
jwcid屬性的html標記。其中jwc的意思是Java Web
Component。Tapestry使得java代碼與html完全分離,利用這個框架開發大型應用變得輕而易舉。並且開發的應用很容易維護和升級。
Tapestry支持本地化,其錯誤報告也很詳細。Tapestry主要利用javabean和xml技術進行開發。【Spindle:Tapestry
輔助開發Eclipse插件】.
FreeMarker 【Java開源模板引擎】
FreeMarker允許Java
servlet保持圖形設計同應用程序邏輯的分離,這是通過在模板中密封HTML完成的。模板用servlet提供的數據動態地生成
HTML。模板語言是強大的直觀的,編譯器速度快,輸出接近靜態HTML頁面的速度。
【FreeMarker Eclipse Plugin與FreeMarker IDE:Eclipse平台下的輔助開發工具】
Lucene 【Java開源搜索引擎】
Apache
Lucene是一個基於Java全文搜索引擎,利用它可以輕易地為Java軟件加入全文搜尋功能。Lucene的最主要工作是替文件的每一個字作索引,索引讓搜尋的效率比傳統的逐字比較大大提高,Lucen提供一組解讀,過濾,分析文件,編排和使用索引的API,它的強大之處除了高效和簡單外,是最重要的是使使用者可以隨時應自已需要自訂其功能。
iText 【Java開源PDF類庫】
iText是一個能夠快速產生PDF文件的java類庫。iText的java類對於那些要產生包含文本,表格,圖形的只讀文檔是很有用的。它的類庫尤其與java
Servlet有很好的給合。使用iText與PDF能夠使你正確的控制Servlet的輸出。
Groovy 【Java開源動態語言】
Groovy是一種基於JVM的敏捷開發語言,它結合了Python、Ruby和 Smalltalk的許多強大的特性。
Groovy已在WebWork2中的應用。它可以被編譯為標準的Java Bytecode。
OpenCms 【Java開源CMS系統】
OpenCms是一個J2EE的產品,它是用 Java寫成的。它和Tomcat捆綁在一起。但是也能夠使用ATG
Dynamo、WebLogic和WebSphere。OpenCms支持多種RDBMS來保存內容,包括Oracle、SQL
Server、Sybase和mySQL。新版本提供了一個新的模板引擎,JSP支持,一種新的連接管理系統,提高了穩定性。
JUnit 【Java開源測試工具】
JUnit是由 Erich Gamma 和 Kent Beck 編寫的一個回歸測試框架(regression testing
framework)。Junit測試是程序員測試,即所謂白盒測試,因為程序員知道被測試的軟件如何(How)完成功能和完成什麼樣(What)的功能。Junit是一套框架,繼承TestCase類,就可以用Junit進行自動測試了。
BlueJ 【Java開源IDE】
BlueJ是一個專門為入門級教學設計的JavaTM 開發環境。它是由澳大利亞墨爾本Monash大學BlueJ小組設計並開發的。
XWiki 【Java開源Wiki系統】
XWiki是一個強大的Java開源的Wiki引擎。它支持一些受歡迎的特性如:
內 容管理(瀏覽/編輯/預覽/保存),
支持附件,
版本控制,
全文本搜索,
權 限管理
使用Hibernate進行數據存儲,
RSS輸出與顯示外部的RSS feeds,
多 語言支持,
提供XML/RPC的API,
WYSIWYG HTML編輯器,
導出為PDF
Groovy 腳本支持等等….。
EJBCA 【Java開源網絡服務器端組件】
EJBCA是一個全功能的CA系統軟件,它基於J2EE技術,並提供了一個強大的、高性能並基於組件的CA。EJBCA兼具靈活性和平台獨立性,能夠獨立使用,也能和任何J2EE應用程序集成。
JXTA 【Java開源其它項目】
Sun微系統公司公開了旨在建立P2P(Peer to
Peer)通用技術基礎的JXTA計劃。JXTA技術是網絡編程和計算的平台,用以解決現代分佈計算尤其是點對點(P2P)計算中出現的問題。
JXTA將建立核心的網絡計算技術,提供支持在任何平台、任何地方以及任何時間實現P2P計算的一整套簡單、小巧和靈活的機制。JXTA首先將歸納目前
P2P的功能特別,而後建立核心的技術來表達目前的P2P計算的局限性。其重點是創建基本的機制,而具體的策略選擇權則交給應用的開發者。JXTA將充分利用XML、Java等開放技術,使得UNIX操作系統更強大和靈活,比如利用管道(Pipes)傳輸Shell命令實現複雜的計算任務。JXTA支持
P2P應用的基本功能來建立一個P2P系統,還將努力證實這些可以成為建立更高層功能的基礎構造模塊。JXTA架構可以分為三個層面:JXTA核心層、
JXTA業務層和JXTA應用層。
DWR 【Java開源AJAX框架】
DWR(Direct Web
Remoting)是一個WEB遠程調用框架.利用這個框架可以讓AJAX開發變得很簡單.利用DWR可以在客戶端利用JavaScript直接調用服務端的Java方法並返回值給JavaScript就好像直接本地客戶端調用一樣(DWR根據Java類來動態生成JavaScrip代碼).它的最新版本
DWR0.6添加許多特性如:支持Dom Trees的自動配置,支持Spring(JavaScript遠程調用spring
bean),更好瀏覽器支持,還支持一個可選的commons-logging日記操作.
ZK 【Java開源AJAX框架】
ZK是一個Ajax Java Web框架,利用少量代碼就能夠開發出擁有Rich
UI的Web應用。ZK提供基於XUL的標記語言和事件驅動的組件,可以讓你像開發桌面應用程序一樣簡單。支持EL表達式和腳本語言包括:JavaScript、Ruby和Groovy等。支持Annotation及數據綁定。集成Google
Maps、FCKeditor、DOJO以及Timeline。
java框架有哪些常用框架?
十大常用框架:
一、SpringMVC
二、Spring
三、Mybatis
四、Dubbo
五、Maven
六、RabbitMQ
七、Log4j
八、Ehcache
九、Redis
十、Shiro
延展閱讀:
一、SpringMVC
Spring Web MVC是一種基於Java的實現了Web MVC設計模式的請求驅動類型的輕量級Web框架,即使用了MVC架構模式的思想,將web層進行職責解耦,基於請求驅動指的就是使用請求-響應模型,框架的目的就是幫助我們簡化開發,Spring Web MVC也是要簡化我們日常Web開發的。
模型(Model )封裝了應用程序的數據和一般他們會組成的POJO。
視圖(View)是負責呈現模型數據和一般它生成的HTML輸出,客戶端的瀏覽器能夠解釋。
控制器(Controller )負責處理用戶的請求,並建立適當的模型,並把它傳遞給視圖渲染。
Spring的web模型 – 視圖 – 控制器(MVC)框架是圍繞着處理所有的HTTP請求和響應的DispatcherServlet的設計。
Spring Web MVC處理請求的流程
具體執行步驟如下:
1、 首先用戶發送請求————前端控制器,前端控制器根據請求信息(如URL)來決定選擇哪一個頁面控制器進行處理並把請求委託給它,即以前的控制器的控制邏輯部分;圖2-1中的1、2步驟;
2、 頁面控制器接收到請求後,進行功能處理,首先需要收集和綁定請求參數到一個對象,這個對象在Spring Web MVC中叫命令對象,並進行驗證,然後將命令對象委託給業務對象進行處理;處理完畢後返回一個ModelAndView(模型數據和邏輯視圖名);圖2-1中的3、4、5步驟;
3、 前端控制器收回控制權,然後根據返回的邏輯視圖名,選擇相應的視圖進行渲染,並把模型數據傳入以便視圖渲染;圖2-1中的步驟6、7;
4、 前端控制器再次收回控制權,將響應返回給用戶,圖2-1中的步驟8;至此整個結束。
二、Spring
2.1、IOC容器:
IOC容器就是具有依賴注入功能的容器,IOC容器負責實例化、定位、配置應用程序中的對象及建立這些對象間的依賴。應用程序無需直接在代碼中new相關的對象,應用程序由IOC容器進行組裝。在Spring中BeanFactory是IOC容器的實際代表者。
2.2、AOP:
簡單地說,就是將那些與業務無關,卻為業務模塊所共同調用的邏輯或責任封裝起來,便於減少系統的重複代碼,降低模塊間的耦合度,並有利於未來的可操作性和可維護性。AOP代表的是一個橫向的關係
AOP用來封裝橫切關注點,具體可以在下面的場景中使用:
Authentication 權限
Caching 緩存
Context passing 內容傳遞
Error handling 錯誤處理
Lazy loading 懶加載
Debugging調試
logging, tracing, profiling and monitoring 記錄跟蹤 優化 校準
Performance optimization 性能優化
Persistence持久化
Resource pooling 資源池
Synchronization 同步
Transactions 事務
三、Mybatis
MyBatis 是支持普通 SQL查詢,存儲過程和高級映射的優秀持久層框架。MyBatis 消除了幾乎所有的JDBC代碼和參數的手工設置以及結果集的檢索。MyBatis 使用簡單的 XML或註解用於配置和原始映射,將接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java對象)映射成數據庫中的記錄。
總體流程:
(1)加載配置並初始化
觸發條件:加載配置文件
將SQL的配置信息加載成為一個個MappedStatement對象(包括了傳入參數映射配置、執行的SQL語句、結果映射配置),存儲在內存中。
(2)接收調用請求
觸發條件:調用Mybatis提供的API
傳入參數:為SQL的ID和傳入參數對象
處理過程:將請求傳遞給下層的請求處理層進行處理。
(3)處理操作請求 觸發條件:API接口層傳遞請求過來
傳入參數:為SQL的ID和傳入參數對象
處理過程:
(A)根據SQL的ID查找對應的MappedStatement對象。
(B)根據傳入參數對象解析MappedStatement對象,得到最終要執行的SQL和執行傳入參數。
(C)獲取數據庫連接,根據得到的最終SQL語句和執行傳入參數到數據庫執行,並得到執行結果。
(D)根據MappedStatement對象中的結果映射配置對得到的執行結果進行轉換處理,並得到最終的處理結果。
(E)釋放連接資源。
(4)返回處理結果將最終的處理結果返回。
MyBatis 最強大的特性之一就是它的動態語句功能。如果您以前有使用JDBC或者類似框架的經歷,您就會明白把SQL語句條件連接在一起是多麼的痛苦,要確保不能忘記空格或者不要在columns列後面省略一個逗號等。動態語句能夠完全解決掉這些痛苦。
四、Dubbo
Dubbo是一個分佈式服務框架,致力於提供高性能和透明化的RPC(遠程過程調用協議)遠程服務調用方案,以及SOA服務治理方案。簡單的說,dubbo就是個服務框架,如果沒有分佈式的需求,其實是不需要用的,只有在分佈式的時候,才有dubbo這樣的分佈式服務框架的需求,並且本質上是個服務調用的東東,說白了就是個遠程服務調用的分佈式框架。
1、透明化的遠程方法調用,就像調用本地方法一樣調用遠程方法,只需簡單配置,沒有任何API侵入。
2、軟負載均衡及容錯機制,可在內網替代F5等硬件負載均衡器,降低成本,減少單點。
3、 服務自動註冊與發現,不再需要寫死服務提供方地址,註冊中心基於接口名查詢服務提供者的IP地址,並且能夠平滑添加或刪除服務提供者。
節點角色說明:
Provider: 暴露服務的服務提供方。
Consumer: 調用遠程服務的服務消費方。
Registry: 服務註冊與發現的註冊中心。
Monitor: 統計服務的調用次調和調用時間的監控中心。
Container: 服務運行容器。
五、Maven
Maven這個個項目管理和構建自動化工具,越來越多的開發人員使用它來管理項目中的jar包。但是對於我們程序員來說,我們最關心的是它的項目構建功能。
六、RabbitMQ
消息隊列一般是在項目中,將一些無需即時返回且耗時的操作提取出來,進行了異步處理,而這種異步處理的方式大大的節省了服務器的請求響應時間,從而提高了系統的吞吐量。
RabbitMQ是用Erlang實現的一個高並發高可靠AMQP消息隊列服務器。
Erlang是一門動態類型的函數式編程語言。對應到Erlang里,每個Actor對應着一個Erlang進程,進程之間通過消息傳遞進行通信。相比共享內存,進程間通過消息傳遞來通信帶來的直接好處就是消除了直接的鎖開銷(不考慮Erlang虛擬機底層實現中的鎖應用)。
AMQP(Advanced Message Queue Protocol)定義了一種消息系統規範。這個規範描述了在一個分佈式的系統中各個子系統如何通過消息交互。
七、Log4j
日誌記錄的優先級,分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定義的級別。
八、Ehcache
EhCache 是一個純Java的進程內緩存框架,具有快速、精幹等特點,是Hibernate中默認的CacheProvider。Ehcache是一種廣泛使用的開源Java分佈式緩存。主要面向通用緩存,Java EE和輕量級容器。它具有內存和磁盤存儲,緩存加載器,緩存擴展,緩存異常處理程序,一個gzip緩存servlet過濾器,支持REST和SOAP api等特點。
優點:
1、 快速
2、 簡單
3、 多種緩存策略
4、緩存數據有兩級:內存和磁盤,因此無需擔心容量問題
5、 緩存數據會在虛擬機重啟的過程中寫入磁盤
6、可以通過RMI、可插入API等方式進行分佈式緩存
7、 具有緩存和緩存管理器的偵聽接口
8、支持多緩存管理器實例,以及一個實例的多個緩存區域
9、提供Hibernate的緩存實現
缺點:
1、使用磁盤Cache的時候非常佔用磁盤空間:這是因為DiskCache的算法簡單,該算法簡單也導致Cache的效率非常高。它只是對元素直接追加存儲。因此搜索元素的時候非常的快。如果使用DiskCache的,在很頻繁的應用中,很快磁盤會滿。
2、 不能保證數據的安全:當突然kill掉java的時候,可能會產生衝突,EhCache的解決方法是如果文件衝突了,則重建cache。這對於Cache數據需要保存的時候可能不利。當然,Cache只是簡單的加速,而不能保證數據的安全。如果想保證數據的存儲安全,可以使用Bekeley DB Java Edition版本。這是個嵌入式數據庫。可以確保存儲安全和空間的利用率。
九、Redis
redis是一個key-value存儲系統。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set –有序集合)和hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數據都是緩存在內存中。區別的是redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,並且在此基礎上實現了master-slave(主從)同步。
Redis數據庫完全在內存中,使用磁盤僅用於持久性。相比許多鍵值數據存儲,Redis擁有一套較為豐富的數據類型。Redis可以將數據複製到任意數量的從服務器。
1.2、Redis優點:
(1)異常快速:Redis的速度非常快,每秒能執行約11萬集合,每秒約81000+條記錄。
(2)支持豐富的數據類型:Redis支持最大多數開發人員已經知道像列表,集合,有序集合,散列數據類型。這使得它非常容易解決各種各樣的問題,因為我們知道哪些問題是可以處理通過它的數據類型更好。
(3)操作都是原子性:所有Redis操作是原子的,這保證了如果兩個客戶端同時訪問的Redis服務器將獲得更新後的值。
(4)多功能實用工具:Redis是一個多實用的工具,可以在多個用例如緩存,消息,隊列使用(Redis原生支持發佈/訂閱),任何短暫的數據,應用程序,如Web應用程序會話,網頁命中計數等。
1.3、Redis缺點:
(1)單線程
(2)耗內存
十、Shiro
Apache Shiro是Java的一個安全框架,旨在簡化身份驗證和授權。Shiro在JavaSE和JavaEE項目中都可以使用。它主要用來處理身份認證,授權,企業會話管理和加密等。Shiro的具體功能點如下:
(1)身份認證/登錄,驗證用戶是不是擁有相應的身份;
(2)授權,即權限驗證,驗證某個已認證的用戶是否擁有某個權限;即判斷用戶是否能做事情,常見的如:驗證某個用戶是否擁有某個角色。或者細粒度的驗證某個用戶對某個資源是否具有某個權限;
(3)會話管理,即用戶登錄後就是一次會話,在沒有退出之前,它的所有信息都在會話中;會話可以是普通JavaSE環境的,也可以是如Web環境的;
(4)加密,保護數據的安全性,如密碼加密存儲到數據庫,而不是明文存儲;
(5)Web支持,可以非常容易的集成到Web環境;
Caching:緩存,比如用戶登錄後,其用戶信息、擁有的角色/權限不必每次去查,這樣可以提高效率;
(6)shiro支持多線程應用的並發驗證,即如在一個線程中開啟另一個線程,能把權限自動傳播過去;
(7)提供測試支持;
(8)允許一個用戶假裝為另一個用戶(如果他們允許)的身份進行訪問;
(9)記住我,這個是非常常見的功能,即一次登錄後,下次再來的話不用登錄了。
java有哪些框架需要學習呢?
Java有三大框架:Struts,Hibernate和Spring。struts是開源軟件,通過學習struts的流程,架構,model部分,view部分和contorller組件來了解框架;Hibernate是開源代碼的對象關係映射框架,通過學習session接口等來了解框架。
1.三大框架簡介1、Spring Spring 是一個解決了許多在J2EE 開發中常見的問題的強大框架. Spring 提供了管理業務對 象的一致方法並且鼓勵了注入對接口編程而不是對類編程的良好習慣.Spring 的架構基礎是 基於使用JavaBean 屬性的Inversion Control容器.然而,這僅僅是完整圖景中的一部 分:Spri
跟着這個網站學吧:網站內容豐富,既有Java SE的基礎:中級:前端:J2EE:Java框架:還有實踐項目:我自己就是跟着上面的順序一路學過來…
2.Java 語言編寫的 AOP 框架,它給 POJOs 提供了聲明式的事務管理和其他企業事務–如… 開始的學習和應用非常的艱苦,很多東西都不 能一下子就很容易的理解.EJB 要嚴格地…
這是兩種以跨平台為特色的開發方式.Qt更多被認為是一種框架,但是Qt中有新增一些C… 博文 在博主認為,學習java的最佳學習方法莫過於視頻+博客+書籍+總結,前三者博主將…查看全部
2016年8月22日-根據每個人的學習方式、方法不同,可以制定具體的計劃。今天為大家整理了搭建Java知識框架的幾個方法… java框架SSM一. 序言本次培訓分四個階段進行,…
3.2008年1月3日-和如何學習JAVA框架的一點看法吧,希望對「望而生畏」的您,和「蠢蠢欲動… 自己需要的時候去copy過來就行,個人也認為這是很好的一種方式,往往自己從… 這就是第二個問題。 第二個問題,我想分兩方面來回答一下。1、學什麼?想要學好,當…
2016年8月3日- 用配置文件或者是Annonation的方式來代替New創建實例,可以說這是一個… Java框架學習 順序是哪些? Java框架學習 順序是哪些?詳細步驟具體如下:…
[ 圖文 ] 2013年12月9日- 三大框架簡介JAVA三大框架用來做WEB應用。struts主要負責表示層的顯示spring利用Java框架學習方法更多下載資源、學習資料請訪問CSDN文庫頻道….
Java 語言編寫的 AOP框架, 它給 POJOs 提供了聲明式的事務管理和其他企業事務–如… 在 EJB 開始的學習和應用非常的艱苦, 很多東西都不能一下子就很容易的理解.
希望能幫到你,謝謝!
Java目前主流框架都有哪些?
框架1:Spring框架
該框架排名第一,因為它具有開發複雜Web應用程序的出色能力,而且,這些應用程序因性能突出而廣受讚譽。它使Java開發人員能夠輕鬆地創建企業級應用程序。
Web應用程序開發人員可以證明Spring框架的能力。這就是Spring成為Java開發人員最愛的原因。下面的數據可以證明這一點。以下是開發者(選擇Java作為首選的三種編程語言之一)對Java框架的看法:
在開發人員的選擇中,Spring MVC和Spring Boot遠遠領先於其他Java技術。對於開發人員來說,這裡的一大優勢是他們可以不受其他模塊約束而專註於一個模塊,因為Spring利用了控制反轉(IoC)。
這個框架的其他一些優點是一個全面的配置模型,支持傳統數據庫和現代數據庫(如NoSQL),並通過支持面向方面編程來支持內聚開發。它提供了一些模塊,如Spring MVC、Spring Core、Spring Boost、SpringTransaction等。
框架2:Hibernate框架
作為一個對象關係映射(ORM)數據庫,它改變了我們以前查看數據庫的方式。儘管它不是一個全棧框架,但它可以極其輕鬆地為多個數據庫轉換數據。
它支持多個數據庫的能力使它很容易擴展,無論應用程序的大小或用戶的數量如何。它速度快、功能強大、易於擴展、修改和配置。
框架3:Struts框架
該框架幫助自定義軟件開發人員創建易於維護的企業級應用程序。這個框架的USP是它的插件。它們是JAR包,這意味着它們是可移植的。
Hibernate插件和Spring插件分別可以用於對象關係映射和依賴注入。使用此Java框架開發應用程序可以減少處理時間,因為它提供了組織良好的Java、JSP和Action類。
框架4:Play
使用該框架的頂尖公司包括LinkedIn、三星、衛報、Verizon等。這隻能說明它的可信度。該框架提供了速度、可伸縮性和性能。
它的用戶界面非常簡單,使移動應用程序開發人員可以快速理解它。它主要用於開發需要統一內容創建的應用程序。
框架5:Google Web Toolkit
這個框架用於客戶端開發,類似JavaScript。它是一個開源的Java框架,這意味着它是免費的。谷歌廣泛使用了這個框架,谷歌產品如AdSense、谷歌錢包、AdWords都是使用它編寫的。
藉助GWT代碼,可以輕鬆地開發和調試Ajax應用程序。Java開發人員更喜歡使用這個框架來編寫複雜的應用程序。書籤、跨瀏覽器可移植性、歷史記錄和管理是它的一些特性。
閱讀完分享的Java的熱門框架後,希望你能有一個更清晰的了解。了解熱門框架不是一個挑戰,但是找到適合你需求的框架是一個挑戰!
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/304514.html