gradle是主要用來工程構建,自動化建設用的java
有朋友問,已經學會了ant,maven等來構建工程了,爲何咱們還要學習gradle?python
由於gradle是一款最新的,功能最強大的構建工具面試
ant,maven能作的事情,gradle必定能夠作,可是gradle能作的,其它不必定能作編程
同時,gradle不只僅是一個工具那麼簡單,是用程序替代傳統的xml配置,使項目構建更加靈活瀏覽器
舉個例子:xml語言寫個if-else使很是困難,可是gradle卻很是的簡單ruby
還有就是,咱們的gradle有豐富的第三方插件,能夠爲所欲爲使用服務器
做爲一名開發者,能夠完善安卓開發工程師/java開發工程師的技術體系,提高自動化構建技術深度,幫助進階爲高級/資深工程師markdown
由於如今安卓工程/java工程都在使用gradle來構建項目閉包
不少人認爲,構建不就是構建出一個apk文件,一個jar包這麼簡單?jvm
gradle技術有那麼深奧?
在公司最終負責構建的人,通常都是級別比較高的同窗,甚至是一些經理,總監等
由於咱們寫再多的代碼,最終都是爲了最後的構建文件
因此這個環節是很是重要的,若是要成爲高級/資深工程師,gradle是必須掌握的一項技能
爲何?
由於在如今的一線互聯網企業,面試的時候絕大部分會考到自動化構建
若是掌握瞭如何使用gradle實現自動化構建,那麼就比別的競爭者有更大的優點
Gradle是使用Groovy語言實現的
Groovy語言就是DSL的一個分支
在瞭解Groovy前,咱們要先搞清楚DSL它本身的一些概念
DSL,領域特定語言
其實咱們很早就接觸了DSL語言了,只是沒有這個概念而已
好比:matlab,這個專門用來作計算的語言,其就是DSL語言的一種
還有uml建模語言,把現實的模型轉換爲計算機模型,也是DSL模型的一種
還有HTML,這個語言也算DSL語言的一個分支,專門用來作瀏覽器頁面的
因此DSL本質上來說,並非一個陌生的概念
這個語言和咱們的系統語言,走的是兩個極端
系統編程語言宗旨是解決全部的問題,好比:java既但願能作安卓開發,又但願能作服務器開發
而DSL語言產生的初衷是,解決計算機相關某一個特定領域內的問題
系統編程語言是大而全,DSL語言是小而細
因此DSL是和咱們的系統開發語言是相鋪相成的,相互結合會產生巨大的做用
在掌握某一個開發語言基礎下,再去掌握一門DSL語言,那麼就是錦上添花的效果
那麼,DSL和咱們的普統統用編程語言,有哪些區別?
DSL縱向,往深度發展的;
系統編程語言,橫向往更廣的應用範圍去發展;
這個是它們最大的區別
接下來,咱們來看下groovy的基本概念
首先,groovy是一種基於jvm的敏捷開發語言
基於jvm說明它和咱們的java背後運行的原理,徹底是同樣的
咱們都知道,java想要運行,首先須要將咱們的java文件編譯爲class文件
而後class文件交給咱們的jvm去運行
groovy和java語言是同樣的,groovy源文件編譯爲class字節碼文件,而後交給咱們的jvm運行
固然,這個還不足與體現咱們groovy的強大
groovy還能將咱們的groovy源文件直接解釋執行,像JavaScript同樣
接下來看下第二個特色
groovy結合了python,ruby和smalltalk 的許多腳本語言的強大特性
咱們都知道,腳本語言寫腳本都是很是強大的,因此groovy寫腳本也能夠6到飛起
既然有了不少強大的腳本語言,爲何還須要groovy?
若是咱們做爲一門java開發者,而後如今去學習python語言等,至關於從頭開始學習新的語言
而咱們的groovy能夠不這樣,由於groovy就是對咱們java的一種擴展
其語法和咱們的java很是的相似,因此能夠學習java的方式學習groovy
因此,在java基礎上學習groovy,比學習其它語言要快點
第三,就是咱們的groovy能夠與java版本完美結合,這一點從都是基於jvm能夠看出來
同時,groovy可使用java全部的庫,是否是很酷?
….到這裏瞭解了groovy的相關概念,接下來咱們來看下groovy的特性
首先它最大的一個特性是語法上支持動態類型,閉包等新一代腳本語言特性
其中groovy的閉包比其它語言的會強大一些
第二,就是能夠無縫集成已存在的java類庫,能夠用java的語法/庫等寫咱們的groovy程序,可是通常咱們不會這麼作
雖然groovy的語法和java相似,可是仍是作了比較多的修改的
第三,groovy既支持面向對象編程,也支持面向過程編程
面向對象是由於groovy是基於java的一個拓展,java是一個面向對象編程的語言
面向過程是由於groovy結合了python等腳本語言的特性
若是用groovy開發程序,那麼就會用到面向對象特性
若是用groovy開發腳本,那麼就會用到面向過程特性
……在瞭解完特性後,咱們看看groovy的優點….
首先,groovy是一種更加敏捷的編程語言
由於其在語法上作了很是多的語法堂,許多在java上寫的在groovy中能夠直接省掉,也就是用更少的代碼寫出一樣的功能
第二個優點是,入門容易,功能強大
入門容易指掌握java下,去學習groovy是很是簡單的
第三,既能夠做爲編程語言,也能夠做爲腳本語言
哈哈,該篇就寫到這裏(一塊兒體系化學習,一塊兒成長)