ava開發概述:
使用Java做Web應用開發已經有近20年的歷史了,從最初的Servlet1.0一步步演化到現在如此多的框架,庫以及整個生態系統。經過這麼長時間的發展,Java作為一個成熟的語言,也演化出了非常成熟的生態系統,這也是許多公司採用Java作為主流的語言進行伺服器端開發的原因,也是為什麼Java一直保持著非常活躍的用戶群。然而這個生態系統紛繁複雜,一個非常簡單的Java Web應用程式都有可能應用到以下技術:
Java開發分為兩個陣營,一個是由Oracle 為代表的Java EE陣營,這是Web開發的官方參考標準。其中核心技術主要有Servlet, EJB, JMS, JSF, JDBC/JPA, JAXB, JAX-WS等。另一個陣營則是由開源社群以及Pivotal代表的Spring陣營,其中核心技術主要有 Spring Framework, Spring MVC, Spring Data, Spring Security等。
Spring從最開始作為依賴注入的Bean container,逐漸發展為Java應用開發的主流框架。 Java EE因為其臃腫,複雜,難以使用的結構,被許多Java程式設計師拋棄。從Java EE6開始才引入了CDI (Context Dependency Injection),而且Java EE 的設計思想非常學術化, Gavin King等人脫離了工業界的需求,使得Java EE開發非常複雜。 JSF甚至為Java之父James Gosling詬病。相反地在Spring社區,越來越多現代化的應用開發方法被融入進來,形成不同的Spring專案。
什麼是Spring Boot?
Spring Boot便是一個社區反饋推動的項目. Spring Boot可以說是至少近5年來Spring乃至整個Java社區最有影響力的項目之一。 Spring Boot主要包含以下特性:
直接嵌入Tomcat, Jetty或Undertow作為Servlet container。從此之後再也不用將應用程式打包成war然後上傳到application server裡面了。
提供了starter POM, 能夠非常方便的進行包管理, 很大程度上減少了jar hell或者dependency hell
自動進行Spring框架的配置,節省程式設計師大量的時間和精力,能夠讓程式設計師專注在業務邏輯程式碼的編寫上
不需要任何第三方系統, Spring Boot自帶了可以用於生產環境的程式狀態資訊和健康狀態。同時可以讓應用程式非常方便的讀取外部的設定資訊
完全不需要任何程式碼的自動產生。更不需要用xml來進行框架的配置
為什麼Spring Boot是顛覆性的?
為什麼說Spring Boot是顛覆性的呢?因為它徹底改變了Java應用開發的模式。以往我們做Spring應用開發,要知道要配置哪些類別來讓Hibernate和Spring一起工作,要知道如何配置view resolver來控制哪個模版進行視圖層的展示。常寫了一大堆程式碼之後發現只是在處理Spring框架本身的配置,根本一行業務邏輯都沒有寫。開發完成之後,我們還要考慮部署的問題,且不說部署到非常笨重的應用伺服器,例如WebSphere, Weblogic或JBoss,即使部署到Tomcat或Jetty這種輕量級容器上面,我們要知道如何設定容器,如何修改設定檔等等。而且在多應用程式部署到同一個Tomcat的時候,常常會出現衝突。就算我們花了很大力氣解決了這些問題,程式部署成功之後,我們很難去了解這個程式的運作狀態。有可能我們要配置很多第三方工具來去知道這個應用程式運作狀態如何,有哪些參數,環境變數是什麼。儘管Spring幫我們解決了依賴注入的問題,簡化了一些MVC的流程,但是Spring框架本身集成了越來越多東西,導致其越來越難配置,維護成本成直線上升。很多時候Java程式設計師們看到Python, Ruby或是JavaScript程式設計師敲幾個指令安裝一些函式庫,然後簡單的敲幾行程式碼,引入一些框架例如flask,然後直接一個簡單的API就可以跑起來了。這時候Java程式設計師可能還在研究該使用Maven裡面的哪個函式庫,如何在程式碼裡面進行設定。大家心裡的表情一定是這樣:
傳統Spring開發對決Spring Boot應用開發
接下來我會透過具體例子對比傳統的Spring應用開發和Spring Boot應用開發。假如我們開發一個Hello World的REST API,傳統的Spring開發應該這麼做.
1. 如果使用Maven進行套件管理,編寫pom.xml 如下
如上可以看到為了編寫簡單的hello world REST API我們引入了Spring Core, Spring Web, Spring Web MVC, Java Servlet and Jackson這麼多套件依賴。可以想像複雜一點的程式這個pom會變成什麼樣子。 。 。
2. 寫HelloWorldInitializer class如下
這個已經是非常簡單的Java Config了,在Servlet 3.0之前用XML配置Spring的小伙伴們現在估計已經崩潰。
3. 寫HelloWorldConfiguration class
注意到我們這個類別裡面一行業務邏輯都沒有哦。 。 。
4. 真正開始編寫HelloWorldRestController
用Spring Boot顛覆Java應用開發
使用Java做Web應用開發已經有近20年的歷史了,從最初的Servlet1.00的框架,庫以及整個生態系。經過這麼長時間的發展,Java作為一個成熟的語言,也演化出了非常成熟的生態系統,這也是許多公司採用Java作為主流的語言進行伺服器端開發的原因,也是為什麼Java一直保持著非常活躍的用戶群。
作者:論碼農的自我修養來源:推酷|2016-10-14 14:16
收藏
分享
分享
20年的歷史了,從最初的Servlet1.0一步步演化到現在如此多的框架,庫以及整個生態系統。經過這麼長時間的發展,Java作為一個成熟的語言,也演化出了非常成熟的生態系統,這也是許多公司採用Java作為主流的語言進行伺服器端開發的原因,也是為什麼Java一直保持著非常活躍的用戶群。然而這個生態系統紛繁複雜,一個非常簡單的Java Web應用程式都有可能應用到以下技術: Java開發分為兩個陣營,一個是由Oracle 為代表的Java EE陣營,這是Web開發的官方參考標準。其中核心技術主要有Servlet, EJB, JMS, JSF, JDBC/JPA, JAXB, JAX-WS等。另一個陣營則是由開源社群以及Pivotal代表的Spring陣營,其中核心技術主要有 Spring Framework, Spring MVC, Spring Data, Spring Security等。 Spring從最開始作為依賴注入的Bean container,逐漸發展為Java應用開發的主流框架。 Java EE因為其臃腫,複雜,難以使用的結構,被許多Java程式設計師拋棄。從Java EE6開始才引入了CDI (Context Dependency Injection),而且Java EE 的設計思想非常學術化, Gavin King等人脫離了工業界的需求,使得Java EE開發非常複雜。 JSF甚至為Java之父James Gosling詬病。相反地在Spring社區,越來越多現代化的應用開發方法被融入進來,形成不同的Spring專案。 什麼是Spring Boot?Spring Boot便是一個社區反饋推動的項目. Spring Boot可以說是至少近5年來Spring乃至整個Java社區最有影響力的項目之一。 Spring Boot主要包含以下特性:直接嵌入Tomcat, Jetty或Undertow作為Servlet container。從此之後再也不用將應用程式打包成war然後上傳到application server裡面了。 提供了starter POM, 能夠非常方便的進行包管理, 很大程度上減少了jar hell或者dependency hell自動進行Spring框架的配置,節省程式設計師大量的時間和精力,能夠讓程式設計師專注在業務邏輯程式碼的編寫上不需要任何第三方系統, Spring Boot自帶了可以用於生產環境的程式狀態資訊和健康狀態。同時可以讓應用程式非常方便的讀取外部的設定資訊🎜🎜完全不需要任何程式碼的自動產生。更不需要用xml來進行框架的配置🎜🎜為什麼Spring Boot是顛覆性的?🎜為什麼說Spring Boot是顛覆性的呢?因為它徹底改變了Java應用開發的模式。以往我們做Spring應用開發,要知道要配置哪些類別來讓Hibernate和Spring一起工作,要知道如何配置view resolver來控制哪個模版進行視圖層的展示。常寫了一大堆程式碼之後發現只是在處理Spring框架本身的配置,根本一行業務邏輯都沒有寫。開發完成之後,我們還要考慮部署的問題,且不說部署到非常笨重的應用伺服器,例如WebSphere, Weblogic或JBoss,即使部署到Tomcat或Jetty這種輕量級容器上面,我們要知道如何設定容器,如何修改設定檔等等。而且在多應用程式部署到同一個Tomcat的時候,常常會出現衝突。就算我們花了很大力氣解決了這些問題,程式部署成功之後,我們很難去了解這個程式的運作狀態。有可能我們要配置很多第三方工具來去知道這個應用程式運作狀態如何,有哪些參數,環境變數是什麼。儘管Spring幫我們解決了依賴注入的問題,簡化了一些MVC的流程,但是Spring框架本身集成了越來越多東西,導致其越來越難配置,維護成本成直線上升。很多時候Java程式設計師們看到Python, Ruby或是JavaScript程式設計師敲幾個指令安裝一些函式庫,然後簡單的敲幾行程式碼,引入一些框架例如flask,然後直接一個簡單的API就可以跑起來了。這時候Java程式設計師可能還在研究該使用Maven裡面的哪個函式庫,如何在程式碼裡面進行設定。大家心裡的表情肯定是這樣:
(求此時Java程式設計師心理陰影面積)
Java程式設計師揚眉吐氣的時候到了!
傳統Spring開發對決Spring Boot應用開發
傳統Spring開發對決對決會透過具體例子來比較傳統的Spring應用開發和Spring Boot應用開發。假如我們開發一個Hello World的REST API,傳統的Spring開發應該這麼做.
1. 如果使用Maven進行包管理,編寫pom.xml 如下
如上可以看到為了編寫簡單的hello worldworld REST API我們引入了Spring Core, Spring Web, Spring Web MVC, Java Servlet and Jackson這麼多套件依賴。可以想像複雜一點的程式這個pom會變成什麼樣子。 。 。
2. 寫HelloWorldInitializer class如下
這個已經是非常簡單的Java Config了,在Servlet 3.0之前用XML配置Spring的小伙伴們現在估計已經崩潰。
3. 寫HelloWorldConfiguration class
注意到我們這個類別裡面一行業務邏輯都沒有哦。 。 。
4. 真正開始寫HelloWorldRestController
5. 下載Tomcat
6. 打包部署到Tomcat上
7.訪問localhost:8080/Hello World World
7.訪問累覺不愛了。 。 。 接下來Java老司機會帶領你們感受一下Spring Boot的魅力:
依賴的版本
依賴的版本
就隨他去吧
我們在這裡標記HelloWorldDemoApplication class為SpringBootAppli, Spring Boot 桌上配置掃描,注入必要的類,注入自動配置的類別等等。
這裡的main函數是一個java標準的main函數,這個相當於應用程式入口,servlet container會在啟動的時候找到這個入口,啟動Spring container,完成初始化。 3. 編寫HelloWorldRestController 4. 直接啟動應用程序,不需要部署 5. 訪問http://localhost:8080 就可以直接看到了0080 之前可以直接看到了0080 HelloWorld程式對新手來說至少要花個10-20分鐘之類的,有了SpringBoot, 最多3分鐘內搞定HelloWorld不是夢。 總結🎜這裡我只是簡單的對SpringBoot進行了講解,SpringBoot有非常多值得深入討論的東西,它不僅讓我們做Java開發變的簡單有效,更重要的是SpringBoot徹底顛覆了我們對Java開發的認識,讓我們第一次有了」原來Java開發可以這麼做」 的感覺。有了SpringBoot之後,Java程式設計師可以更專注於業務邏輯,進行更敏捷的開發。