A. 什麼是java架構
問題有點大,不知從何入手。
我就以我個人觀點瞎說吧。
一、語法的構成,java和c、c++沒啥太大的差別
在程序的控制方面:
循環(for,while),分歧(if,whish),頭文件(改成引入包),預處理指令貌似是取消了,
內存控制方面:
java與c最大的不同是無法直接操作指針,使得java程序更安全,
java採用了資源回收機制,自動清理內存中被丟棄的碎片,
模塊關系:
java是單向繼承,這樣防止了程序模塊之間的關系過於復雜。
java廣泛採用介面,超級介面,超級父類來規范和擴展程序功能。
二、從執行環境來看:
眾所周知,java程序是依託於虛擬機來執行的,這樣編譯過的java代碼不是真正意義的可以運行的代碼,而是一個介於兩者之間的中立體,這樣就可以在任何平台上互補沖突的執行而不犯錯誤這也是java最大的特點之一。
三、API以及擴展
java基本功能都依賴於核心函數庫(類庫,方法庫)來執行。所有基本方法和類,都可以在api文檔中查看,並且為了功能擴展,java支持導入新的api
B. JAVA的框架都有哪些
模型(Model )封裝了應用程序的數據和一般他們會組成的POJO。
視圖(View)是負責呈現模型數據和一般它生成的HTML輸出,客戶端的瀏覽器能夠解釋。
控制器(Controller )負責處理用戶的請求,並建立適當的模型,並把它傳遞給視圖渲染。
Spring的web模型 - 視圖 - 控制器(MVC)框架是圍繞著處理所有的HTTP請求和響應的DispatcherServlet的設計。
(2)java架構擴展閱讀:
1、IOC容器:
IOC容器就是具有依賴注入功能的容器,IOC容器負責實例化、定位、配置應用程序中的對象及建立這些對象間的依賴。應用程序無需直接在代碼中new相關的對象,應用程序由IOC容器進行組裝。在Spring中BeanFactory是IOC容器的實際代表者。
2、AOP:
簡單地說,就是將那些與業務無關,卻為業務模塊所共同調用的邏輯或責任封裝起來,便於減少系統的重復代碼,降低模塊間的耦合度,並有利於未來的可操作性和可維護性。AOP代表的是一個橫向的關系
C. java的框架有哪些
Java框架可以簡化開發難度,更便於我們開發程序。所以學好Java框架還是比較重要的。
Java的框架主要有:SpringMVC、Spring、Mybatis、Dubbo、Maven、RabbitMQ、Log4j、Ehcache、Redis、Shiro。
不過這十個我們不需要都學會,只要學會其中四五個比較常用的就可以。
第一個,SpringMVC。Spring MVC是一種基於Java地實現了Web MVC設計模式的請求驅動類型的輕量級Web框架,主要是幫助我們簡化日常的Web開發;
第二個,Mybatis。MyBatis 是支持普通 SQL查詢,存儲過程和高級映射的優秀持久層框架;
第三個,Spring。Spring深得企業的青睞;
第四個,Maven。越來越多的開發人員開始使用maven。
掌握以上四種框架,你在找工作的時候就會比較吃香。
D. 什麼是java五大框架
JAVA三大框架Struts、hibernate和spring。struts 主要負責表示層的顯示,spring 利用它的IOC和AOP來處理控制業務(負責對資料庫的操作),hibernate 主要作用是數據的持久化到資料庫。
一、Spring是一個解決了許多在J2EE開發中常見的問題的強大框架。 Spring提供了管理業務對象的一致方法並且鼓勵了注入對介面編程而不是對類編程的良好習慣。
Spring提供了唯一的數據訪問抽象,包括簡單和有效率的JDBC框架,極大的改進了效率並且減少了可能的錯誤。Spring的數據訪問架構還集成了Hibernate和其他O/R mapping解決方案。Spring還提供了唯一的事務管理抽象,它能夠在各種底層事務管理技術,例如JTA或者JDBC事務提供一個一致的編程模型。Spring提供了一個用標准Java語言編寫的AOP框架,它給POJOs提供了聲明式的事務管理和其他企業事務--如果你需要--還能實現你自己的aspects。這個框架足夠強大,使得應用程序能夠拋開EJB的復雜性,同時享受著和傳統EJB相關的關鍵服務。Spring還提供了可以和IoC容器集成的強大而靈活的MVC Web框架。
二、說到Struts框架,它是一個基於Sun J2EE平台的MVC框架,主要是採用Servlet和JSP技術來實現的。由於Struts能充分滿足應用開發的需求,簡單易用,敏捷迅速,在過去的一年中頗受關注。Struts把Servlet、JSP、自定義標簽和信息資源(message resources)整合到一個統一的框架中,開發人員利用其進行開發時不用再自己編碼實現全套MVC模式,極大的節省了時間,所以說Struts是一個非常不錯的應用框架。
三、Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱資料庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序實用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。
E. java框架分類
1. JAVA技術本身:包括環境變數,虛擬機,JAVA語言基礎及語言特點
2. JAVA開發包: 分為J2EE, J2SE,J2ME,解釋每個包中的函數特點
3. 開發工具: 分為NetBean, JBuilder,Eclipse,JCreator
4. 應用平台: LINUX,WINDOWS,手機,主要闡述各種配置
5. 其他
以上只是比較粗略的想法,希望能暫時滿足你的需求。
F. java架構有哪些
主流框架還是MVC框架技術
1:jsp+servlet+javaben適用於比較小的項目
2:strut+spring+hibnate
目前這是主流框架技術組合在一起就是ssh了
適用於要求可維護性強的框架技術
3:ejb jsf等重量級框架技術比較過時
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開源 Job調度】
Quartz 是OpenSymphony開源組織在Job scheling領域又一個開源項目,它可以與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 的出現顯 得別具意義。
G. java框架是什麼意思
對於初學者來說,這三大框架Struts+Hibernate+Spring被賦予了太多神秘的色彩,似乎它們是重中之重的知識!但是對於擁有多年java開發經驗的專業技術人員來說,對於那些Java牛人來說,卻對這三大框架不太感冒!那麼這三大框架到底重不重要呢?
不過,就目前而言,現在基本沒有struts了,用spring誰會用struts呢?有ss是因為最開始的spring沒有做mvc,只做了ioc容器,spring說mvc太容易了,做了吧,有了mvc之後,就沒有struts啥事了!
當然有些老項目還在用struts,但了解基本使用即可。學三大框架的話,建議先重點學習spring,spring真是個太優秀的框架了!
先會使用,才看是如何實現的,最後體會框架的思想,思考有沒有其他的框架或者jdk中有類似的思想。思想最重要。
H. java框架體系
I. Java的技術架構有哪些
服務分離
隨著系統的的上線,用戶量也會逐步上升,很明顯一台伺服器已經滿足不了系統的負載,這時候,我們就要在伺服器還沒有超載的時候,提前做好准備。
由於我們是單體架構,優化架構在短時間內是不現實的,增加機器是一個不錯的選擇。這時候,我們可能要把應用和資料庫服務單獨部署,如果有條件也可以把文件伺服器單獨部署。
反向代理
為了提升服務處理能力,我們在Tomcat容器前加一個代理伺服器,我一般使用Nginx,當然你如果更熟悉apache也未嘗不可。
用戶的請求發送給反向代理,然後反向代理把請求轉發到後端的伺服器。
嚴格意義上來說,Nginx是屬於web伺服器,一般處理靜態html、css、js請求,而Tomcat屬於web容器,專門處理JSP請求,當然Tomcat也是支持html的,只是效果沒Nginx好而已。
反向代理的優勢,如下:
隱藏真實後端服務
負載均衡集群
高可用集群
緩存靜態內容實現動靜分離
安全限流
靜態文件壓縮
解決多個服務跨域問題
合並靜態請求(HTTP/2.0後已經被弱化)
防火牆
SSL以及http2
動靜分離
基於以上Nginx反向代理,我們還可以實現動靜分離,靜態請求如html、css、js等請求交給Nginx處理,動態請求分發給後端Tomcat處理。
Nginx 升級到1.9.5+可以開啟HTTP/2.0時代,加速網站訪問。
當然,如果公司不差錢,CDN也是一個不錯的選擇。
服務拆分
在這分布式微服務已經普遍流行的年代,其實我們沒必要踩過多的坑,就很容易進行拆分。市面上已經有相對比較成熟的技術,比如阿里開源的Dubbo(官方明確表示已經開始維護了),spring家族的spring cloud,當然具體如何去實施,無論是技術還是業務方面都要有很好的把控。
Dubbo
SpringCloud
服務發現——Netflix Eureka
客服端負載均衡——Netflix Ribbon
斷路器——Netflix Hystrix
服務網關——Netflix Zuul
分布式配置——Spring Cloud Config
微服務與輕量級通信
同步通信和非同步通信
遠程調用RPC
REST
消息隊列
持續集成部署
服務拆分以後,隨著而來的就是持續集成部署,你可能會用到以下工具。
Docker、Jenkins、Git、Maven
圖片源於網路,基本拓撲結構如下所示:
整個持續集成平台架構演進到如下圖所示:
服務集群
Linux集群主要分成三大類( 高可用集群, 負載均衡集群,科學計算集群)。其實,我們最常見的也是生產中最常接觸到的就是負載均衡集群。
負載均衡實現
DNS負載均衡,一般域名注冊商的dns伺服器不支持,但博主用的阿里雲解析已經支持
四層負載均衡(F5、LVS),工作在TCP協議下
七層負載均衡(Nginx、haproxy),工作在Http協議下
分布式session
大家都知道,服務一般分為有狀態和無狀態,而分布式sessoion就是針對有狀態的服務。
分布式Session的幾種實現方式
基於資料庫的Session共享
基於resin/tomcat web容器本身的session復制機制
基於oscache/Redis/memcached 進行 session 共享。
基於cookie 進行session共享
分布式Session的幾種管理方式
Session Replication 方式管理 (即session復制)
簡介:將一台機器上的Session數據廣播復制到集群中其餘機器上
使用場景:機器較少,網路流量較小
優點:實現簡單、配置較少、當網路中有機器Down掉時不影響用戶訪問
缺點:廣播式復制到其餘機器有一定廷時,帶來一定網路開銷
Session Sticky 方式管理
簡介:即粘性Session、當用戶訪問集群中某台機器後,強制指定後續所有請求均落到此機器上
使用場景:機器數適中、對穩定性要求不是非常苛刻
優點:實現簡單、配置方便、沒有額外網路開銷
缺點:網路中有機器Down掉時、用戶Session會丟失、容易造成單點故障
緩存集中式管理
簡介:將Session存入分布式緩存集群中的某台機器上,當用戶訪問不同節點時先從緩存中拿Session信息
使用場景:集群中機器數多、網路環境復雜
優點:可靠性好
缺點:實現復雜、穩定性依賴於緩存的穩定性、Session信息放入緩存時要有合理的策略寫入