成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

聊聊Java平臺上的非Java語言

開發 開發工具
Java虛擬機定義了一個"軟CPU", 和Intel 的x86 的指令集一樣, 這個軟CPU也有一套自己的指令,這就意味者對于任意一門編程語言,只要你能編譯成Java 的字節碼指令,或者在運行時動態的生成字節碼指令, 就可以運行在Java虛擬機中。

Java 的創造者們在一開始就把Java 語言和Java 虛擬機分開, 現在看來是個非常明智的決定。

Java虛擬機定義了一個"軟CPU", 和Intel 的x86 的指令集一樣, 這個軟CPU也有一套自己的指令,這就意味者對于任意一門編程語言, 只要你能編譯成Java 的字節碼指令,或者在運行時動態的生成字節碼指令, 就可以運行在Java虛擬機中。

Java 虛擬機發展了這么多年, 已經非常的成熟和穩定, 是一個很有吸引力的平臺。 除了Java 之外還有不少編程語言慕名而來, 今天就來聊一聊。

1.Jython和JRuby

從這兩位名字開頭的字母 "J" 就可以看出來這兩個語言和Java 的血緣關系。

沒錯,他們就是可以運行在Java 虛擬機上的Python 和 Ruby 。 不同于用C語言寫的CPython和 CRuby, 這兩者需要一個JVM才能運行。

既然是運行在JVM上的語言, 自然要能調用Java 類庫, 要不然放著這么多優質Java 資源不用多可惜!

下面就是一個在JRuby 腳本中調用 Java Swing的例子:

如果你思考的深入一些,就會有這么一個問題 : 由于Python 和ruby 都是腳本語言, 都是解釋執行的, 沒有編譯的過程, 那Jython和JRuby 在解釋的過程中,肯定得生成Java 字節碼, 要不然JVM就會把他們拒之門外。那字節碼是怎么在運行中生成的?

答案就是ASM , 一個可以動態生成字節碼的Java 類庫。

(碼農翻身注: 參見文章《ASM: 一個低調成功者的自述》)

我個人覺得Jyhton和JRuby能在JVM上運行起來,調用Java 類庫, 是個很好的賣點, 但是卻難以大規模流行, 原因可能也是類庫造成的。

最早的時候學習C語言, 由于沒有良好的類庫,就是對一個字符串操作都很麻煩, 那些更加高層的語言例如Java, Python, Ruby 就彌補了這個缺陷, 語言自帶強大的類庫, 再加上社區的貢獻, 用起來非常順手。 說個題外話, 這也直接導致了很多初學者的疑問: 語言都封裝好了, 我還學數據結構干嘛?!

Python, Ruby 社區已經積累了大量的、好用的庫, 他們才是Python, Ruby一派繁榮的主要原因, 但是這些庫都是Python, Ruby寫的, 也有不少是C語言寫的, 這些海量的類庫全部移植到Java 上絕非易事, 我們也不能要求類庫的作者同時提供Java 版本 。

而Java 現成的類庫總是感覺和Python , Ruby 有一點Gap, 語言設計的思維不同, 雖然可以集成互操作, 但還是感覺別扭。

也許Jython和JRbuy 只是小范圍內或者特定場合使用吧。

2.Groovy

Groovy 并不像Jython, JRuby, 它并不是一個現有語言在JVM上的移植, 而是一個全新設計的語言。

Groovy被定義為JVM上的動態腳本語言, 適合編寫腳本, 測試用例和 領域特定語言(DSL)。

用Groovy 寫的軟件中有兩個比較知名:

1). Gradle

一個風頭正勁的Build 工具, 得益于Groovy 簡潔的語法, 可以用“Build領域特定的語言”來描述一個軟件的構建過程, 寫出的Build腳本 和Ant, Maven 的xml 腳本 相比,讀起來更賞心悅目。 在Web項目,Android項目的 Build過程中有大量使用。

下面是一個例子, 大家可以感受一下和Maven 的區別:

2). Grail

這應該是模仿Ruby on Rail的一個項目,熱度已經過去, 估計使用的人不多了。

記得在2008年IBM的毛新生帶領著團隊搞了一個Project Zero出來, 基于Groovy和PHP, 目標是快速Web項目開發, 喧囂了一陣也是歸于沉寂。

在JVM上, Java 是毋庸置疑的老大, Spring 是一座難以撼動的大山, 所以Groovy ***還是把注意力集中到 小工具,測試 以及Build上, 這是它能***發揮能量的地方。

3.Scala 和 Clojure

Scala ***次進入我的視線是一則新聞: Twitter 決定把核心應用從Ruby on Rails 遷移到Scala,作為曾經的Ruby擁躉, 看到這個消息是讓人沮喪的 : Twitter 可是Ruby on Rails 經常拿來宣傳的一個明星系統了, 現在Twitter 竟然想轉到Scala , Scala是什么鬼? 怎么可能獲得Twitter 工程師的青睞?

后來看了一下,Scala是一個很有趣的語言, 在他的官網上寫著“Object-Oriented Meets Functional” , 面向對象遇上了函數式編程 ! 也就是說一門語言混合了兩種編程范型。 不僅如此,它還是一個可以運行在Java 虛擬機上的語言, JVM的成熟和穩定, 可能也是Twitter 工程師選擇Scala的重要原因。

(碼農翻身注: 關于函數式編程, 可以參考《命令式編程 vs 聲明式編程》)

有人說了,我面向對象還沒學完呢, 還學函數式編程? 我推薦你看看《黑客與畫家》一書, 看完以后十有八九會被Paual 自身成功的案例和 富有煽動性的語言給鼓動起來, 熱血沸騰的去嘗試函數式編程語言Lisp(我就是如此) :-)

但是我相信大部分人都只是淺嘗輒止, 因為純函數式編程和我們日常使用的C, Java, Python 這些命令式編程語言大相徑庭, 需要巨大的思維轉變, ***是完全忘掉之前所學的命令式編程才行, 所以學習曲線極為陡峭, 把很多人都嚇回去了。

現在好了, Scala即支持OO, 又支持Functional , 你可以在一個相對舒服的環境漸漸的去嘗試函數式編程的奧妙,確實是不錯的選擇。

如果你非要學習一個純粹的函數式編程語言, 可以考慮Clojure ,這是一個運行在JVM中的lisp方言, 同樣可以和Java 類庫互操作。

4.總結

說了這么多, 如果讓我為一個大型項目選擇語言, 我極有可能還是要選擇Java, 對于一個大型項目來說, 代碼的可讀性、可維護性是非常重要的,我之前讀一些動態語言的代碼, 看到一個變量而不知道它的類型,沒法查看它的行為, 這是非常令人抓狂的體驗。

而Java 這種靜態類型的語言,IDE的感知能力, 安全重構的能力是極為重要的, 讓人覺得安全,可控,適合大團隊協作。

【本文為51CTO專欄作者“劉欣”的原創稿件,轉載請通過作者微信公眾號coderising獲取授權】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2010-03-22 09:30:55

Linux非開源軟件

2009-01-16 09:10:39

JavaCRM系統企業應用

2013-08-27 10:31:05

Headless模式Java SE設計模式

2012-04-25 14:27:03

JavaScala

2016-11-28 09:08:43

java系統異步非阻塞

2012-04-25 14:12:12

JavaScala

2012-04-26 13:37:43

ScalaJavaQCon

2012-06-12 09:43:34

微軟Linux服務

2012-11-05 10:39:15

IBMdw

2021-08-10 19:15:17

語言編程應用

2016-12-28 09:30:37

Andriod安卓平臺依賴注入

2019-11-26 14:52:40

Linux工具寫作者

2011-12-01 11:36:42

云計算蘋果谷歌

2021-12-16 06:52:33

C語言內存分配

2010-06-09 17:46:53

2011-09-07 17:04:40

QT平臺模擬鼠標

2024-01-22 10:18:32

平臺工程開發人員技術

2023-07-03 16:15:46

模型訓練

2022-04-02 08:14:02

JavaThreadLoca數據

2021-12-11 19:00:54

Java中斷機制
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人在线播放网站 | 中文字幕一区二区三区四区不卡 | 色小姐综合网 | 丁香五月缴情综合网 | 中文字幕国产精品 | 久久久国产一区二区三区 | 美女拍拍拍网站 | 91精品国产综合久久久密闭 | 国产精品欧美精品 | 91综合在线视频 | 超碰在线国产 | 成人a视频在线观看 | 国产精品久久二区 | 欧美黑人狂野猛交老妇 | 国产一区二区三区免费观看视频 | 一级片免费视频 | 日韩一区二区不卡 | 免费av电影网站 | 欧美一区二区三区在线观看视频 | 日韩免费一区二区 | 欧美日韩在线一区二区三区 | 福利网站导航 | 日韩精品免费在线观看 | 黄网站免费入口 | 免费成人高清在线视频 | 综合久久综合久久 | 欧美一区免费 | 国产成人一区二区 | 成年人视频免费在线观看 | 免费xxxx大片国产在线 | 7777久久 | 国产在线网址 | 日日干干 | 久久精品综合 | 午夜精品一区二区三区免费视频 | 欧美一级免费看 | 97在线观看 | 国产精品69久久久久水密桃 | 国产精品美女久久久久aⅴ国产馆 | 国产精久久久久久久妇剪断 | 欧美福利|