//xia仔のke:itzcw.com/8948/
Web3.0和以往版本的區別與對比
Web3.0和以往版本的主要區別在于其技術架構、哲學理念和功能特性。以下是它們的對比:
Web1.0:
Web2.0:
Web3.0:
總體而言,Web3.0致力于建立一個去中心化、用戶主導、隱私保護和可信交易的互聯網新時代。
NFT項目實戰為什么選擇Web3.0
NFT項目選擇Web3.0的主要原因有幾個方面:
綜上所述,NFT項目選擇Web3.0是因為它提供了去中心化、數字資產支持、智能合約和去信任化等特性,為NFT的創建、交易和管理提供了更加可靠和高效的解決方案。
//xia栽ke:chaoxingit.com/2441/
很多初學者開始接觸Java EE的時候,都會略有些迷茫,搞不太懂Java EE與Java之間的關系,也不太清楚各個框架都是干嘛的,名詞也多,內容也復雜,不知道從哪個地方開始入手。因此,我們這篇文章就為給大詳細解讀一下Java EE到底是什么,包括哪些方面,應該怎樣學習。
一、Java EE到底是什么?
Java EE實際上是Java語言和API的集合。官方說法叫企業級開發,實際上最多的就是做Web應用開發,這里面的Web應用和單獨一個網站還是有很大區別的,例如單獨開發一個靜態頁面,很多工具很快就可以完成了。而Web應用,更多的是指在網絡上,以看起來像網站形式提供服務的一個復雜應用。例如說Google,網頁上看著非常簡單,就一個框,實際上,后面有大量的數據庫,有大量的推薦算法、查詢算法,有廣告推薦服務,有排名服務等等,可能這些服務,在網頁上最終顯示出來的就一句話,但是背后的業務程序卻非常復雜。
像淘寶、京東這些購物網站的后臺,都是Java寫的。背后要處理的東西非常多。比如說下一個訂單,就要考慮庫存狀態、訂單的存儲和備份、后臺的訂單處理、狀態變更、出庫入庫、支付系統、結算系統、對賬系統,等等。
而這么復雜的一個系統,Java EE把它分為三層,分別是表示層、中間層、數據層。C#中的三層分別是表示層,業務邏輯層、數據訪問層,只是不一樣的說法,但表達的是同一個意思。如下圖所示:
所以對于一個簡單的系統,比如說圖書管理系統來說,按上圖從左到右,就分成五個部分。
1、瀏覽器:負責輸入要查詢的圖書,以及把查詢的圖書展示在瀏覽器里供人查看。
2、視圖展示層:把瀏覽器里輸入的內容包裝一下,發給業務處理層。比如說瀏覽器里輸入的是“紅樓夢”,它輸入給業務處理層的內容可能是{“bookname”:“紅樓夢”,“type”:“Query”},告訴業務處理層,這人要查詢一本叫紅樓夢的書。同時業務處理層查完了,查到一本紅樓夢,作者曹雪芹,朝代清朝,頁數1563頁,出版社清華大學出版社,返回給它之后,它再給包裝一下,什么名字大寫,圖片放在右邊,作者放下下面之類。然后給瀏覽器一顯示,用戶就看到了。
3、業務邏輯層:處理一下業務邏輯,比如說判斷一下,前端傳來是,是要查詢,還是要刪除這本書,或者是要查詢相似的書,等等。要查詢這本書,他就去查一下,看這本書庫里有沒有,給持久層一個查詢指令。要刪除這本書,他就先看一下,發請求的這個人有沒有權限,這本書庫里有沒有,刪除這本書這個事要不要記錄在日志里等等,確定要刪除了,就給持久層發一個刪除這本書的指令,發現這個人不能刪除這本書,就返回給視圖展示層說警告,你的權限不足,刪不了。
4、持久層:用來操作數據庫的,把四面八方來的數據庫增刪改查指令都收集到它這里,一起處理,至于他是開一個數據庫連接還是一百個連接查詢,那就是他自己的事了。
5、數據庫:那就老老實實執行,持久層給他什么指令他就干什么。
所以可以說,Java EE,就是實現上面這樣的系統,需要的一系列技術的集合。
二、Java EE與Java語言之間的關系
Java EE是以Java語言為基礎的,可以認為Java語言是漢字,而Java EE則是不同類型的文章。會寫漢字,并不代表會寫論文、公文。而會寫論文也不代表會寫公文。
三、Java EE包括哪些技術
通常來講,Java EE包括13項核心技術。
1、JDBC(Java DataBase Connectivity):用來連數據庫的。
2、JNDI(Java Naming and Directory Interfaces) :給當前服務器管理的所有資源一個統一的標識,換句話說通過這服務能找到服務器管理的任何資源并使用。比如說數據庫、網頁、文件、連接池等。
3、EJB(Enterprise JavaBean):實際給企業干活的組件,企業自己寫完注冊在服務器上,服務器給他一個統一的標識,就JNDI管那個,然后應用服務就可以調用了。在這里面,Java EE是提供了部署和使用這些組件的平臺和標準。按這個標準寫的組件就可以用了。
4、RMI (Remote Method Invoke):遠程方法調用,它提供了一種方法,可以遠程調用另一個Java虛擬機上的對象中的方法。
5、JSP(Java Server Pages):生成Html給瀏覽器展示用的。JSP頁面由HTML代碼和嵌入其中的Java代碼組成。服務器在頁面端所請求以后,對這些Java代碼進行處理,然后將生成的HTML頁面返回給客戶端的瀏覽器。
6、Java servlet:一種小型Java程序,它擴展了Web服務器的功能。作為一種服務器端的應用,當被請求時開始執行。Servlet提供的功能大多與JSP類似,不過實現的方式不同。JSP通常是大多數HTML代碼中嵌入少量的Java代碼,而Servlet全部由Java寫成并生成HTML。
7、XML(Extensible Markup Language):可擴展標記語言。大家都見過。
8、JMS(Java Message Service) :Java消息服務,消息中間件規范。JMS的客戶端之間可以通過JMS服務進行異步的消息傳輸。JMS用于和面對面對消息的中間件相互通信的應用程序接口(API)。既支持點對點的域,又支持發布/訂閱(publish/subscribe)類型的域。常用的消息中間件如ActiveMQ都支持完整的JMS標準。
9、Java IDL (Interface Description Language) /CORBA (Common Object Broke Architecture) Java:接口定義語言/公用對象請求代理程序體系結構。IDL是用來描述軟件組件接口的一種計算機語言。IDL通過一種中立的方式來描述接口,使得在不同平臺上運行的對象和用不同語言編寫的程序可以相互通信交流。
10、JTS (Java Transaction Service) :是一個組件事務監視器。規定了事務管理器的實現方式。
JTS事務管理器為應用服務器,資源管理器,獨立的應用以及通信資源管理器提供了事務服務。
11、JTA(Java Transaction API):和JTA一起為J2EE平臺提供了分布式事務服務(distributed transaction)。就是在一堆業務和數據源里,保證了用戶操作不會操作到一半出問題后半新半舊的情況,要么全操作完,要么操作失敗回到原始狀態。
12、JavaMail:顧名思義,存取郵件服務器的API,支持郵件發送服務器SMTP,接收服務器POP3、IMap等。但是其API不怎么好用,底層很強大。所以Spring提供了mail包,封閉了javax.mail,比原生的好用很多。
13、JAF (JavaBean Activation Framework):是一個專用的數據處理框架,它用于封裝數據,并為應用程序提供訪問和操作數據的接口。JAF的主要作用在于讓java應用程序知道如何對一個數據源進行查看、編輯和打印等操作。就是那個大家經常見到的activation.jar。
(此處已添加書籍卡片,請到客戶端查看)
四、各類框架與Java EE的關系
提到Java EE,就不得不提到各種輕量級框架,Java EE相關的框架又多又復雜,很多人搞不清楚都是干嘛的。但是其實很簡單,Java EE提供的原生功能,很多都不怎么好用,所以程序員們,在基于原生功能基礎上,做了很多封裝,就是把原生的不怎么好用的功能包起來,用更人性的方式讓你使用,然后它再費勁巴拉的去調用原生的框架或者拐個彎實現要用的功能。
1、表現層框架:表現層框架是用來替代JSP和Servlet的,主要有Struts1、Struts2和Spring MVC。說白了就是JSP和Servlet不太用戶友好,用這兩個框架幫忙給弄得用戶友好些。目前Spring MVC已經成為了主流框架,Struts已經基本沒什么人用了,而隨著前后端分離的快速流行,Spring MVC提供接口,VUE/React等提供展現的開發模式已經越來越流行了。
2、持久層框架:用來代替原生JDBC,主要有Hibernate、MyBatis/Plus、Spring Data JPA等。他們能讓操作數據庫,數據庫表與實體類的映射,數據庫查詢結果與前端的展現融合變得非常簡單。而不是像JDBC返回一堆數據自己再處理。
3、全棧式框架:在三層結構的各個部分進行優化。主流即為Spring,以IOC(Inverse Of Control 反轉控制)和AOP(Aspect Oriented Programming 面向切面編程)為內核,提供了表現層MVC和持久層Spring JDBC以及業務層事務管理等眾多的企業級應用技術,還能整合眾多著名的開源第三方框架和類庫,逐漸成為使用最多的JavaEE企業應用開源框架。換句話說,Java EE提供的三層功能,該框架及其容納進來的各種類庫都能給實現了,所以人們現在基本上都只用它。而Spring Boot是在Spring框架基礎上,進行了進一步封裝,變得更加好用了。總結起來,這些框架在Java EE三層結構中的代替關系如下圖所示。
五、小結
綜上所述,Java EE的整個技術棧,包括很多種內容,其中最為核心的,就是完全一個企業級應用所需要的展現、業務處理、和數據存儲三層功能。而學習Java EE最基礎的,是在了解其技術源流的基礎上,學習一個能實現企業業務功能的最小技術集。
這個最小集在多年以前以SSH(Struts、Spring、Hibernate)較為流行,后來升級為Struts2,到后來Struts2漸漸被SpringMVC替換掉,變成了Spring + SpringMVC + Hibernate/ibatis架構。
之后Hibernate配置維護需要的人力成本大而慢慢被ibatis代替,后來MyBatis出現了,從iBatis到MyBatis,MyBatis提供了更為強大的功能,同時并沒有損失其易用性,就變成為了Spring+SpringMVC+Mybatis,這是很多公司比較流行的框架。
目前,隨著SpringBoot的流行,開始向SpringBoot+Mybatis/plus架構轉變,而Spring Data Jpa,又在持久層逐漸占領Mybatis/plus的市場。同時隨著微服務的流行,基于SpringBoot的SpringCloud微服務框架開始成為前沿框架。
總之,對于一名軟件從業人員來說,要掌握一套完整的開發技術棧,然后不斷地嘗試新的前沿技術,從而使自己不被時代所淘汰。
#34;夏哉ke":itzcw.com/5168/
ReactNative和Flutter的比較
React Native和Flutter都是優秀的跨平臺移動應用開發框架,選擇哪一個取決于項目的具體需求、開發團隊的熟悉程度和個人偏好。
以下是React Native和Flutter在不同維度的對比:
對比維度 | React Native | Flutter |
編程語言 | JavaScript | Dart |
社區生態 | 龐大,成熟的社區,豐富的第三方組件和庫 | 快速增長的社區,生態系統相對較新但迅速發展 |
文檔質量 | 良好,但Flutter的文檔更發達、更易于瀏覽 | 優秀,提供深入、易于理解的文檔 |
可擴展性 | 高,可以直接調用原生代碼,使用原生組件 | 高,支持多種平臺和語言,有良好的擴展性 |
維護成本 | 中等,可能因使用額外庫而增加 | 較低,統一的渲染引擎減少了維護負擔 |
性能 | 良好,但可能比Flutter稍慢,因為使用JavaScript橋接 | 高性能,特別是在理論性能上強于React Native |
熱重載功能 | 有,支持快速開發流程 | 有,支持快速開發流程 |
支持的 platforms | Android, iOS, Windows, macOS, Web等 | Android, iOS, Web, Windows, Linux等 |
學習曲線 | 平滑,適合熟悉JavaScript的開發者 | 陡峭,需要學習Dart語言,但適合熟悉靜態類型語言的開發者 |
渲染引擎 | 使用原生UI元素 | 使用自己的渲染引擎和組件庫 |
用戶界面復雜度 | 用戶界面復雜,需選擇額外庫 | 用戶界面靈活且表現力強 |
綜合來看,React Native因其廣泛的社區支持和豐富的第三方庫而被廣泛使用,特別適合那些已經熟悉JavaScript和React的開發團隊。Flutter則以其高性能、統一的渲染引擎和快速的開發周期受到青睞,尤其適合需要高性能應用和對原生渲染有特定需求的開發團隊。
針對搜索query中提出的React Native和Flutter的比較,建議如下:
學習ReactNative的優勢
React Native是一種流行的移動應用開發框架,它允許開發者使用JavaScript和React來構建跨平臺的移動應用。以下是學習React Native的一些主要優勢:
React Native的最大優勢在于它可以讓你用一套代碼同時在iOS和Android平臺上開發應用。這意味著你可以節省時間和資源,因為不需要為每個平臺單獨編寫和維護代碼。
React Native支持熱更新,即無需重新下載安裝應用即可更新應用的功能。這對于需要頻繁更新的應用來說非常有用,因為它可以減少更新流程的時間和復雜性。
React Native擁有一個龐大的社區,社區成員們貢獻了許多開源庫和工具,這些都可以幫助開發者更快地完成項目。此外,由于React Native是由Facebook發起的項目,因此它得到了Facebook的支持和推廣,這也意味著它的未來發展前景廣闊。
React Native采用原生渲染機制,可以直接調用設備的原生API,從而保證了應用的流暢性和響應速度。此外,React Native還支持原生模塊集成,可以實現更好的用戶體驗和功能擴展。
React Native采用JavaScript語言進行開發,這使得學習曲線更加平緩。JavaScript語言易學易用,降低了開發門檻,同時React Native還提供了強大的組件化開發模式和聲明式UI設計,使得開發人員能夠更快速地實現業務邏輯和界面設計,提高了開發效率。
總的來說,學習React Native可以讓開發者獲得跨平臺開發的便利,提高開發效率,并且得到社區的強大支持。然而,需要注意的是,雖然React Native有許多優點,但也存在一些局限性,例如在某些特定場景下可能無法達到原生應用的性能,以及在某些復雜的UI效果上可能需要更多的努力來實現。