摘要:我們可以利用的所有動態(tài)功能構(gòu)建高性能的應(yīng)用將開發(fā)效率提高幾個數(shù)量級這就是我們?yōu)槭裁匆獙W它注本文首發(fā)于公眾號,可長按或掃描下面的小心心來訂閱環(huán)境部署本文實驗所用為,這里介紹使用工具來安裝的方法。
為什么要學Groovy
Groovy運行于JVM之上,然而其對動態(tài)語言、函數(shù)式編程范式以及元編程功能的加持所帶來的表現(xiàn)力和簡潔性可以說甩了Java幾條街。我們可以利用Groovy的所有動態(tài)功能構(gòu)建高性能的JVM應(yīng)用、將開發(fā)效率提高幾個數(shù)量級! 這就是我們?yōu)槭裁匆獙W它!
注: 本文首發(fā)于 My 公眾號 CodeSheep ,可 長按 或 掃描 下面的 小心心 來訂閱 ↓ ↓ ↓Groovy環(huán)境部署
本文實驗所用OS為CentOS7,這里介紹使用sdk工具來安裝Groovy的方法。
首先在命令行下執(zhí)行:
curl -s get.sdkman.io | bash
接下來執(zhí)行:
source "$HOME/.sdkman/bin/sdkman-init.sh"
然后我們就可以使用sdk工具來安裝Groovy:
一句話搞定!
sdk install groovy
完成之后我們來檢查Groovy安裝狀態(tài)
groovy -v
一切就緒
Hello World From Groovy[root@localhost ~]# vim Hello.groovy [root@localhost ~]# more Hello.groovy println "Hello World From Groovy !" [root@localhost ~]# groovy Hello Hello World From Groovy !Groovy語言特性
Groovy是輕量級的Java
Groovy的信噪比比Java高:較少的代碼獲得更多結(jié)果
GDK = Groovy JDK:通過向JDK的各種類中添加便捷方法,Groovy擴展了JDK形成了GDK庫
return語句可選,分號結(jié)尾可選
方法和類默認public
導(dǎo)航操作符可幫助實現(xiàn)對象引用不為空時方法才會被調(diào)用
Groovy不強迫捕獲自己不關(guān)心的異常,沒捕獲的異常自動傳到高層
靜態(tài)方法內(nèi)可使用this來引用Class對象,因此可以鏈式調(diào)用!
兩大優(yōu)點:表現(xiàn)力 + 簡潔!!!
從Java到Groovy用Java寫一段代碼如下:
public class Greetingss { public static void main( String[] args ) { for( int i=0; i<3; i++ ) { System.out.println("ho "); } System.out.println("Merry Groovy"); } }
用Groovy重構(gòu)一遍如下:
for(i in 0..2) { print "ho " } print "Merry Groovy"
看看兩種語言的信噪比對比,真是給人不可估量的感動!
安全導(dǎo)航操作符 ?.可以避免代碼中的大量null引用的判斷
def foo( str ) { str?.reverse() // 僅當str不為null時reverse才會執(zhí)行 }
這可以幫我們省多少個if啊!!!
異常處理與Java相比,Groovy的異常處理少了很多繁文縟節(jié)
對于那些不想處理或者不適合在代碼當前層次處理的異常,Groovy對用戶不做任何要求,任何用戶未處理的異常會自動傳遞到高一層,我們啥也不用寫:
def openfile( fileName ) { // 無需throws new FileInputStream( fileName ) // 無需try...catch... 處理 }
異常可以放到其調(diào)用代碼中處理:
try { openFile("nonexistfile") } catch( FileNotFoundException ex ) { print "Oops: " + ex }
若捕獲所有異常(Exception),則上面catch中異常的類型都可省略:
try { openFile("nonexistfile") } catch( ex ) { // 省略類型表示可捕獲所有異常 print "Oops: " + ex }鏈式調(diào)用
靜態(tài)方法內(nèi)可使用this來引用Class對象,因此可以鏈式調(diào)用
class Wizard { def static learn( trick, action ) { //... this } } Wizard.learn("xxxx", {...}) .learn("yyyy", {...}) .learn("zzzz", {...})后記
作者更多的原創(chuàng)文章在此,歡迎觀賞
My Personal Blog
作者更多的SpringBt實踐文章在此:
Spring Boot應(yīng)用監(jiān)控實戰(zhàn)
SpringBoot應(yīng)用部署于外置Tomcat容器
ElasticSearch搜索引擎在SpringBt中的實踐
初探Kotlin+SpringBoot聯(lián)合編程
Spring Boot日志框架實踐
SpringBoot優(yōu)雅編碼之:Lombok加持
如果有興趣,也可以抽點時間看看作者一些關(guān)于容器化、微服務(wù)化方面的文章:
利用K8S技術(shù)棧打造個人私有云 連載文章
從一份配置清單詳解Nginx服務(wù)器配置
Docker容器可視化監(jiān)控中心搭建
利用ELK搭建Docker容器化應(yīng)用日志中心
RPC框架實踐之:Apache Thrift
RPC框架實踐之:Google gRPC
微服務(wù)調(diào)用鏈追蹤中心搭建
Docker容器跨主機通信
Docker Swarm集群初探
高效編寫Dockerfile的幾條準則
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/68795.html
摘要:函數(shù)式編程概述如今主流的編程語言,函數(shù)式編程范式或多或少都融入其中成了標配,或者說主流語言都在進行函數(shù)式方面的擴充,這是一個大趨勢。 showImg(https://segmentfault.com/img/remote/1460000015089083); 函數(shù)式編程概述 如今主流的編程語言,函數(shù)式編程范式或多或少都融入其中成了標配,或者說主流語言都在進行函數(shù)式方面的擴充,這是一...
摘要:如果期望應(yīng)用程序正常地運行,編碼和部署過程都是重中之重。但應(yīng)用程序?qū)Νh(huán)境的要求非常少只需一個和一個內(nèi)核,然而意想不到是,目前為止尚不存在一個通用的應(yīng)用部署工具機制。當下,經(jīng)過一年的發(fā)展,正式發(fā)布一個簡單健壯且靈活的應(yīng)用部署工具。 【編者按】本文作者 Ron Pressler 是 Parallel Universe 公司的創(chuàng)始人,擁有著豐富的高性能開發(fā)經(jīng)驗。通過這篇文章,Ron 向大家詳...
摘要:日期和時間處理日期和時間的函數(shù)庫。使用中可觀察序列,創(chuàng)建異步基于事件應(yīng)用程序的函數(shù)庫。為分布式系統(tǒng)提供延遲和容錯處理。發(fā)布使用本機格式分發(fā)應(yīng)用程序的工具。將程序資源和打包成和的本機文件。圖像處理用來幫助創(chuàng)建評估或操作圖形的函數(shù)庫。 好資源要分享原文 譯者 唐尤華 翻譯自 github akullpp 構(gòu)建 這里搜集了用來構(gòu)建應(yīng)用程序的工具。 Apache Maven:Mave...
摘要:經(jīng)過年時間的發(fā)展,到目前為止,最新穩(wěn)定版為版本。的發(fā)展剛出生的時候,引起了很多開源社區(qū)的關(guān)注,并且也有個人和企業(yè)開始嘗試使用。通過項目搭建過程來對比的差異和優(yōu)勢。當然它的作用不僅于此,后續(xù)會逐步揭開它的真實面目。而和就相當于當年的和的關(guān)系。 要了解Spring Boot的發(fā)展背景,還得從2004年Spring ...
摘要:軟件架構(gòu)師需要掌握的開源工具的是當前敏捷開發(fā)領(lǐng)域最重要的工具之一。主要用于持續(xù)自動地構(gòu)建測試軟件項目,如與。監(jiān)控一些定時執(zhí)行的任務(wù)。是應(yīng)用程序最好的軟件測試框架之一。是一種自由和開放源碼的類操作系統(tǒng) Java軟件架構(gòu)師需要掌握的開源工具1. JIRAAtlassian的JIRA是當前敏捷開發(fā)領(lǐng)域最重要的工具之一。它用于錯誤...
閱讀 3714·2021-11-23 09:51
閱讀 1372·2021-11-10 14:35
閱讀 4012·2021-09-22 15:01
閱讀 1285·2021-08-19 11:12
閱讀 384·2019-08-30 15:53
閱讀 1695·2019-08-29 13:04
閱讀 3434·2019-08-29 12:52
閱讀 3060·2019-08-23 16:14