精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Java的另一個對手:Mirah

開發 后端
Mirah 滿足了我的愿望,執行JRuby,對于非Java開發者,更平易近人。讓我們面對現實吧,Java并不是特別難學,但有很多細節需要時間來習慣。它不是一個復雜的語言,但它可以嚇跑門外漢。Mirah,我想使語言滿足我的標準,讓我和其他人替換一直想替換的Java。

當你使用Ruby語法,添加靜態類型,并在JVM上運行時,發生了什么?Charles Nutter,JRuby的設計師為我們做了展示:

我們很快將有Java 7,支持API的動態調用和改進。我們有很多編程語言可供選擇- 一些靜態類型,一些是動態類型,...- 這提供了他們自己的獨特優勢。

我們甚至發現Java本身的一些“小變化“,比如文字列表和字符串開關。我們有任何受管理的Runtime的最大、最強的生態系統,數以百萬計的開發者。

但是,缺少了什么東西。沒有語言看起來能夠取代Java本身。或者說,沒有可以充當Java替身。

從Java中學習

讓我們看一看標準,我相信我們必須滿足替換Java的標準。下面是我的觀點,他們都基于大量的使Java獲得成功的指導原則。

同等代碼下,性能等同于Java

如果我們使用新語言開始寫核心庫,以及系統級別的代碼,它必須像Java做的那樣執行準確。我們當然可以嘗試更好的表現,但是“等同Java”絕對是最低限度。

沒有語言強加的Runtime庫

如果使用當前的替代語言的最大的障礙是它們強加于你它們的“鎖鏈”-Runtime庫。沒有5,10,甚至20M的Jar文件,你寫不出"Hello, world" 。復雜的部署,小配置的應用更復雜。甚至更糟糕的,有些語言帶有很大的初始化消耗,在加載他們的Runtime的類文件,和/或初始化Runtime狀態時。

不要比Java復雜

Java的成功很大程度歸功于它的簡單。任何語言試圖替代它,都要考慮這一點,當然這并不意味著不能比Java強大。

優雅

考慮到所有的積極特征,Java也并不是一個特別美麗的語言。有大量的“儀式“,最簡單的程序。類型必須在每個地方聲明。少于80個字符根本寫不出“Hello,world”,而其他語言可在用20個以下的字符做到。

JVM庫的完美整合

取代Java的任何語言必須滿足Java的使用案例。這意味著能夠定義真正的類,真正的靜態方法,真正的數組。從我們的語言到Java,需要被直接調用,使用相同的字節碼,并且相比Java編寫的同樣的調用要更有效率。我們現在使用Java的地方,我們需要使用自己的語言,如果我們不能-我們永遠需要堆棧某個地方存在Java。

拓展

現在的語言競爭,要看誰能最簡單的設計DSL,誰有最簡單的擴展點。擴展Java基本上受限于你可以做什么,用注釋和注釋處理器。而忘記了有一個靈活的語法 - Java看起來像Java。我們假設的語言需要易于擴展,它需要可以很容易地實驗新功能。

是否有可能滿足所有這些要求?我相信是的,那就是叫做Mirah的語言。

Mirah 編程語言

Mirah 滿足了我的愿望,執行JRuby,對于非Java開發者,更平易近人。讓我們面對現實吧,Java并不是特別難學,但有很多細節需要時間來習慣。它不是一個復雜的語言,但它可以嚇跑門外漢。Mirah,我想使語言滿足我的標準,讓我和其他人替換一直想替換的Java。

用代碼來解釋Mirah更容易理解,看看下面的代碼吧!

安裝 Mirah

下載最新的zip文件,Mirah Github 下載頁面

你可以在里面找到mirah-complete.jar,一些bin腳本for "mirah" 、"mirahc,",一組案例、說明、協議等。

準備開始

Mirah 有清晰、簡單的語法。一些非常美麗,你也會發現它非常接近Ruby。

 

  1. puts "Hello, world!" 

我們第一個Mriah程序,利用Mirah命令運行。

 

  1. ~/projects/mirah_play → mirah -e 'puts "Hello, world!"' 
  2. Hello, world! 

 

這里我們使用-e flag執行一行腳本,也可以放入文件中。

 

  1. ~/projects/mirah_play → echo 'puts "Hello, world!"' > hello.mirah  
  2.  
  3. ~/projects/mirah_play → mirah hello.mirah   
  4. Hello, world! 

 

當然我提到Mirah也是一個編譯器。在上面的例子,它在執行前快速編譯已有腳本。沒有runtime庫意味著沒有解釋,所以所有東西在執行前作為JVM字符碼結束。我們使用mirah命令生成類文件:

 

  1. ~/projects/mirah_play → mirahc hello.mirah   
  2.  
  3. ~/projects/mirah_play → ls -l Hello.class   
  4. -rw-r--h;r--  1 headius  staff  505 Mar 19 18:49 Hello.class 
  5.  
  6. ~/projects/mirah_play → java Hello  
  7. Hello, world! 

 

這個例子可能最重要。不僅是Mirah為一段代碼產生了類文件,而且類文件完全獨立。最終的java命令不需要jar文件或類路徑。你決定什么依賴來引入到你的程序。

讓我們瀏覽一下Mirah的基本語法。

基礎語法

Mirah是靜態類型,像Java或Scala一樣,但你僅是觀察也許不知道。這是因為Mirah采用了一種叫做“local type inference(本地類型推斷)“的技術。簡單來說,通常可以從Mirah的上下文推斷對象,變量和方法調用的類型。像Scala和C#中,您仍然必須聲明方法參數; Mirah只是在本地范圍內推斷出類型。

讓我們看看在Java中定義一個簡單的方法,并對比Mirah。首先,是Java:

 

  1. public static String hello(String name) {  
  2.   return "Hello, " + name + "!";  

 

Mirah如下:

 

  1. def hello(name:String)  
  2.   "Hello, #{name}!" 
  3. end 

 

這里我們聲明了name變量,作為String。因為僅是一行代碼是一String,我們知道返回類型一定是String。

如果我們將它放入一個文件,會得到與使用javac同樣的結果。

 

  1. ~/projects/mirah_play → cat HelloJava.java   
  2. public class HelloJava {  
  3.     public static void main(String[] args) {  
  4.         System.out.println(hello("world"));  
  5.     }  
  6.  
  7.     public static String hello(String name) {  
  8.         return "Hello, " + name + "!";  
  9.     }  
  10. }  
  11.  
  12. ~/projects/mirah_play → cat hello_mirah.mirah   
  13. def hello(name:String)  
  14.   "Hello, #{name}!" 
  15. end  
  16.  
  17. puts hello("world")  
  18.  
  19. ~/projects/mirah_play → javac HelloJava.java   
  20.  
  21. ~/projects/mirah_play → mirahc hello_mirah.mirah   
  22.  
  23. ~/projects/mirah_play → javap HelloJava  
  24. Compiled from "HelloJava.java" 
  25. public class HelloJava extends java.lang.Object{  
  26.     public HelloJava();  
  27.     public static void main(java.lang.String[]);  
  28.     public static java.lang.String hello(java.lang.String);  
  29. }  
  30.  
  31.  
  32. ~/projects/mirah_play → javap HelloMirah  
  33. Compiled from "hello_mirah.mirah" 
  34. public class HelloMirah extends java.lang.Object{  
  35.     public static void main(java.lang.String[]);  
  36.     public static java.lang.String hello(java.lang.String);  
  37.     public HelloMirah();  

 

Mirah將腳本頂層作為它的“main”主體,定義的方法轉變為同樣類的靜態方法。這允許你有非常輕型的腳本,很干凈,并沒有runtime依賴。

使用Java庫

一個簡單的Swing應用

 

  1. import javax.swing.JFrame  
  2. import javax.swing.JButton  
  3.  
  4. class SwingMirah  
  5.   def initialize(title:String, w:int, h:int)  
  6.     @title = title  
  7.     @width = w  
  8.     @height = h  
  9.   end  
  10.  
  11.   def run  
  12.     frame = JFrame.new @title 
  13.     frame.setSize @width@height 
  14.     button = JButton.new "Press me" 
  15.     frame.add button  
  16.  
  17.     button.addActionListener do |event|  
  18.       JButton(event.getSource).setText "Mirah rocks!" 
  19.     end  
  20.  
  21.     frame.setVisible true 
  22.   end  
  23. end  
  24.  
  25. sm = SwingMirah.new("Welcome!"300200)  
  26. sm.run 

 

性能

Mirah與Java的性能對比,使用fibonacci。確實說明兩件事:方法調用的性能和整數運算性能- 這都是很難在動態語言進行優化。

 

  1. def fib(a:int):int 
  2.   if a < 2 
  3.     a  
  4.   else 
  5.     fib(a - 1) + fib(a - 2)  
  6.   end  
  7. end  
  8.  
  9. def bench(n:int)  
  10.   n.times do 
  11.     timeStart = System.currentTimeMillis  
  12.     puts "fib(40): #{fib(40)}\nTotal time: #{System.currentTimeMillis - timeStart}" 
  13.   end  
  14. end  
  15.  
  16. bench 3 

 

最終調用fib(40),打印結果,使用插補字符串,與Java對比如何呢?

 

  1. ~/projects/mirah_play → java FibJava  
  2. fib(40): 102334155 
  3. Total time: 883 
  4. fib(40): 102334155 
  5. Total time: 876 
  6. fib(40): 102334155 
  7. Total time: 875 
  8.  
  9. ~/projects/mirah_play → mirah fib.mirah  
  10. fib(40): 102334155 
  11. Total time: 882 
  12. fib(40): 102334155 
  13. Total time: 876 
  14. fib(40): 102334155 
  15. Total time: 878 

 

Mirah與Java的表現完全一致。

更多來自Java的功能

界面定義:

 

  1. import java.util.List  
  2.  
  3. interface Printer do 
  4.   def printAll(a:List)  
  5.     returns void 
  6.   end  
  7. end 

 

我們執行這個界面與Java類似,使用implements 關鍵字,然而在Mirah, implements在類的body中。

 

  1. class MyPrinter  
  2.   implements Printer  
  3.   def printAll(a)  
  4.     a.each {|element| puts element}  
  5.   end  
  6. end  
  7.  
  8. list = ['foo''bar''baz']  
  9. p = Printer(MyPrinter.new)  
  10. p.printAll(list) 

 

文字列表和地圖使用[] 和{} 語法。

 

  1. list = [1,2,3,4]  
  2. list.each {|x| puts x} # prints "1\n2\n3\n4\n" 
  3. map = {'foo' => 'bar'}  
  4. puts map['foo'] # prints "bar" 

 

Mirah,仍然在開發中。但是已經有很多的用戶在使用。在Java兼容性方面考慮很有意義。現在Mirah類似于Java 0.9。. 沒有泛型或枚舉,最小的注釋支持,而且大多基本語言功能...但是你有一些封閉的支持,更多的文字量,局部類型推斷,等等。我們正在 穩步推進Mirah到1.0版本 ,至少相當于Java 5。我們還將繼續改善Mirah的宏觀體制和元編程能力,同時認真的從其他的語言中吸取最酷的功能。

責任編輯:金賀 來源: 開源中國社區
相關推薦

2016-12-26 15:23:21

戴爾

2012-01-12 10:09:55

Elementary 思路

2011-11-10 09:46:41

云計算云管理

2024-01-15 00:35:23

JavaScript框架HTML

2021-05-29 07:13:26

微軟Nobelium網絡攻擊

2018-12-05 09:00:46

DevOps持續交付持續集成

2021-06-16 12:03:49

WindowsLinux游戲

2012-03-02 09:22:11

程序員

2011-11-15 10:16:04

Linux操作系統

2011-11-14 09:41:10

Linux Mint

2017-05-26 18:06:47

2009-04-23 09:42:39

FubuMVCASP.NET MVCMVC

2010-07-22 09:12:26

2013-06-28 15:45:52

產品經理

2023-09-19 23:21:48

Python列表

2009-12-11 09:40:40

傲游Chrome OS

2021-04-15 14:56:21

云計算去中心化

2017-07-03 10:55:08

2009-08-04 15:18:11

C# Actor

2009-08-14 00:55:21

C#程序編譯
點贊
收藏

51CTO技術棧公眾號

亚洲自拍偷拍色图| 久久精品人人做人人爽| 日本精品免费在线观看| 四虎精品在永久在线观看| 水蜜桃久久夜色精品一区的特点| 国产婷婷色一区二区三区四区 | 男人久久天堂| 国产精品少妇自拍| 国产激情美女久久久久久吹潮| 国产精品扒开腿做爽爽| 欧美一级网址| 久久久久久影视| 91久久在线观看| 国产又粗又黄又猛| 亚洲精品国产九九九| 色综合天天视频在线观看| 日本丰满大乳奶| 国产精品玖玖玖| 另类国产ts人妖高潮视频| 久久亚洲精品中文字幕冲田杏梨| 亚洲av成人片色在线观看高潮| 久久婷婷五月综合色丁香| 国产日本欧洲亚洲| 99一区二区三区| 在线观看不卡的av| 亚洲影院在线| 久久久久久久久久久国产| 久久噜噜色综合一区二区| 欧美日韩女优| 欧美三级免费观看| 欧美一区二区视频在线播放| 日本综合在线| 欧美国产精品中文字幕| 精品麻豆av| 国产又大又黄又粗| 欧美一区亚洲| 精品国产电影一区二区| 8x8x成人免费视频| 国产在线激情| 国产精品久久久久久久久搜平片 | 日本久久久久亚洲中字幕| 国产一级片播放| 自产国语精品视频| 久久精品成人欧美大片| 国产三级短视频| 精品日产免费二区日产免费二区| 亚洲国产精品小视频| zjzjzjzjzj亚洲女人| 中文字幕日韩在线| 欧美一级xxx| 欧美国产日韩在线视频| 深夜福利亚洲| 欧美一区二区三区不卡| 奇米777在线视频| 国产精品日本一区二区三区在线| 欧美日韩综合色| 国产视频1区2区3区| 国产人妖一区| 欧美精品久久99久久在免费线| 亚洲 欧美 日韩系列| 久久久久黄色| 制服丝袜一区二区三区| 日本黄色三级网站| 成人动态视频| 亚洲精品久久久久久下一站| 动漫精品一区二区三区| 欧美色女视频| 久久精品久久久久久| 国产天堂av在线| 欧美日韩国产免费观看| 97国产在线观看| 谁有免费的黄色网址| 欧洲美女日日| 日韩中文字幕在线看| 澳门黄色一级片| 亚洲网站啪啪| 国产a∨精品一区二区三区不卡| 18国产免费视频| 亚洲视频一二| 欧美一级高清免费播放| 天天爱天天做天天爽| 亚洲视频碰碰| 日本午夜在线亚洲.国产| 日本黄色中文字幕| 极品销魂美女一区二区三区| 超碰97人人在线| 日本在线视频1区| 国产精品久久毛片av大全日韩| 蜜臀在线免费观看| 蜜桃麻豆影像在线观看| 欧美三级资源在线| 丰满少妇中文字幕| 亚洲精品国产动漫| 久久精品免费电影| 丁香六月婷婷综合| 精品在线你懂的| 国产国语刺激对白av不卡| 国产精品九九九九| 99国产精品久久| 亚洲精品国产一区| av免费不卡国产观看| 欧美日韩一区二区电影| 特级特黄刘亦菲aaa级| 精品国产乱码久久久久久1区2匹| 欧美日韩第一页| 久久精品视频2| 成人综合在线观看| 亚洲欧洲一区二区| 成人影院在线播放| 欧美日韩二区三区| 久久久亚洲av波多野结衣| 综合一区在线| 国产精品白嫩美女在线观看| 国产免费av一区二区| 久久超级碰视频| 精品中文字幕人| 在线观看操人| 欧美日韩另类国产亚洲欧美一级| 在线观看国产免费视频| 欧美在线资源| 国产精品视频男人的天堂| 四虎在线视频免费观看| 亚洲精品你懂的| 亚洲最新在线| 九九热线视频只有这里最精品| 日韩欧美色综合网站| 久久精品国产亚洲AV成人婷婷| 亚洲经典在线看| 欧美在线播放视频| 亚洲精品综合久久| 99久久精品免费看国产| 久久99九九| 国产日产精品久久久久久婷婷| 亚洲一区av在线| 伊人国产精品视频| 欧美oldwomenvideos| 国产91网红主播在线观看| 五月激情丁香婷婷| 亚洲国产精品久久久男人的天堂| 日韩av福利在线观看| 欧美aaaa视频| 国产一区欧美二区三区| 成年人在线免费观看| 自拍偷拍亚洲综合| 天堂av在线网站| 精品一区二区三区中文字幕老牛| 日韩av电影手机在线| 日本啊v在线| 日韩欧美国产高清91| 少妇毛片一区二区三区| 欧美亚洲一区| 日本精品视频一区| 欧美电影免费观看高清完整| 欧美色精品天天在线观看视频| 少妇无套高潮一二三区| 日韩激情视频在线观看| 日本免费高清一区二区| 日韩一区二区三区免费| 亚洲午夜久久久久久久| 日韩不卡高清视频| 国产精品电影一区二区三区| 国产一级免费大片| 亚洲午夜电影| 欧美13一14另类| 日本黄色一区| 久久精品国产久精国产一老狼| 国产特黄一级片| 亚洲国产视频在线| 国产精品三级在线观看无码| 免费高清不卡av| 中文字幕超清在线免费观看| 日韩精品视频中文字幕| 国模精品视频一区二区三区| 青青青手机在线视频观看| 欧美午夜精品免费| 中文字幕手机在线观看| 99久久久免费精品国产一区二区| 88av.com| 最新精品国产| 欧洲精品在线一区| 亚洲国产91视频| 国内精品视频一区| 国产高清视频免费最新在线| 欧美一区二区视频在线观看| 一区二区三区视频免费看| 欧美极品aⅴ影院| 亚洲欧美日韩网站| 亚洲欧美清纯在线制服| av动漫免费观看| 久久国产精品免费精品3p| 国产精品吊钟奶在线| a级毛片免费观看在线| 亚洲欧洲日本专区| 国产手机视频在线| 一本色道**综合亚洲精品蜜桃冫| 国产suv精品一区二区68| 久久青草国产手机看片福利盒子 | 日本亚洲欧美在线| 韩国成人在线视频| 日韩精品视频在线观看视频| 日韩欧美激情| 91精品国产乱码久久久久久蜜臀 | 国产精品一级在线| 男人天堂999| 欧美一区免费| 亚洲国产另类久久久精品极度| a级日韩大片| 国产日韩中文在线| 男人最爱成人网| 欧美日本国产在线| 91在线品视觉盛宴免费| 亚洲国产精品99久久| 国产午夜激情视频| 国产精品久久免费看| 美女又爽又黄视频毛茸茸| 国产一区福利在线| 男女男精品视频站| 性8sex亚洲区入口| 无码日本精品xxxxxxxxx| 欧美freesextv| 亚洲精品在线视频观看| 久久不见久久见国语| 国产精品果冻传媒潘| 96视频在线观看欧美| 欧美精品日韩三级| 成a人v在线播放| 亚洲另类图片色| 神马午夜一区二区| 337p日本欧洲亚洲大胆精品| 国产精品毛片久久久久久久av| 欧美性色欧美a在线播放| 国偷自拍第113页| 亚洲成年人影院| 久久艹精品视频| 亚洲美女偷拍久久| 97成人资源站| 国产91丝袜在线播放| 美女网站色免费| 青娱乐精品视频| 激情五月婷婷久久| 日韩电影一二三区| 欧美激情精品久久久久久小说| 国产精品嫩草99av在线| 先锋影音欧美| 成人毛片免费看| 日韩免费av电影| 精品国产一区二区三区久久久樱花| 久久婷婷国产综合尤物精品| 亚洲妇女av| 欧美日韩精品免费观看视一区二区| 欧美日韩一区二区三区在线电影| 国产美女精品久久久| 精品精品国产毛片在线看| 国产伦理一区二区三区| 久久久久久久久久久久久久久久久久久久| 成人综合av网| 欧美电影免费网站| 欧美日韩天天操| 欧美视频免费| 艳母动漫在线观看| 国产精品videosex极品| 狠狠干 狠狠操| 日韩精品一二区| 五月激情婷婷在线| 国产成人一区在线| 菠萝菠萝蜜网站| 国产日产欧美精品一区二区三区| 人成免费在线视频| 亚洲精品国产视频| 日韩精品无码一区二区| 在线观看国产一区二区| 在线免费看毛片| 精品国产免费一区二区三区四区 | 精品人妻一区二区三区三区四区| 欧美日韩一二三四五区| 午夜一区二区三区四区| 7777女厕盗摄久久久| 亚洲成a人片77777精品| 亚洲精品一区av在线播放| av资源种子在线观看| 精品国内自产拍在线观看| 后进极品白嫩翘臀在线播放| 日韩av日韩在线观看| 日韩成人精品一区二区三区| 国产福利一区二区三区在线观看| 久久av免费| 艳母动漫在线观看| 久久九九99| 能看毛片的网站| 国产亚洲综合在线| 麻豆影视在线播放| 色婷婷综合久久久| 国产高清免费观看| 日韩成人激情视频| 精品黄色免费中文电影在线播放| 欧美日韩高清区| av亚洲一区二区三区| 不卡日韩av| 91久久久精品国产| www.中文字幕在线| 国产乱码精品一区二区三区忘忧草 | 国产精品网站在线观看| 久久久久久久久久久久国产| 在线国产电影不卡| 色综合免费视频| 久久中文字幕国产| 免费污视频在线一区| 国产欧美日本在线| 欧美在线影院| 91精品999| 国产午夜亚洲精品午夜鲁丝片| 久久久久国产精品夜夜夜夜夜| 欧美三日本三级三级在线播放| 污污视频在线免费看| 久久91精品国产| 日韩一级特黄| 水蜜桃亚洲一二三四在线| 亚洲成人在线| 国模大尺度视频| 中文字幕在线一区免费| 欧美性猛交xxxx乱大交hd| 亚洲第一综合天堂另类专| a视频在线观看免费| 成人网在线视频| 久久裸体网站| 国产又大又黄又粗的视频| 久久一二三国产| 男女啊啊啊视频| 亚洲电影天堂av| 俺来也官网欧美久久精品| 99视频在线免费观看| 欧美jizzhd精品欧美巨大免费| 色91精品久久久久久久久| 中文在线免费一区三区高中清不卡 | 欧美女激情福利| 成人免费黄色av| 一区二区三区在线免费播放| 国产普通话bbwbbwbbw| 久久久久北条麻妃免费看| 欧美jizz18| 自拍亚洲欧美老师丝袜| 精久久久久久| 成人做爰69片免费| 亚洲综合色噜噜狠狠| 囯产精品一品二区三区| 欧美激情久久久| 国产精品久av福利在线观看| 亚洲人成无码网站久久99热国产| 国产成人免费视频精品含羞草妖精| 一区二区视频免费看| 欧美一级生活片| 在线观看中文字幕的网站| av一区二区三区在线观看| 极品日韩av| 人人妻人人澡人人爽人人精品| 在线免费精品视频| 999国产在线视频| 91精品国产综合久久男男| 亚洲91中文字幕无线码三区| 手机看片国产精品| 亚洲成av人片观看| 在线播放一级片| 久久中文精品视频| 国产成人精品亚洲线观看| 青青艹视频在线| 国产欧美日韩中文久久| 91亚洲国产成人精品一区| 欧美大片在线看| 免费萌白酱国产一区二区三区| 国产精品少妇在线视频| 国产精品美女视频| 不卡的日韩av| 欧美又大粗又爽又黄大片视频| 欧美亚洲国产一区| aaaaaaaa毛片| 狠狠躁夜夜躁人人爽超碰91| 成av人电影在线观看| 99精彩视频| 日韩专区中文字幕一区二区| 国产精品夜夜夜爽阿娇| 精品国内二区三区| 欧美日韩国产v| 女同性恋一区二区| 久久综合五月天婷婷伊人| 一级欧美一级日韩| 久久免费视频网站| 日韩国产欧美一区二区| 中国老熟女重囗味hdxx| 一本一道久久a久久精品| 麻豆最新免费在线视频| 精品一区久久久| 久久99久久精品欧美| 影音先锋亚洲天堂| 精品国内自产拍在线观看| 五月激激激综合网色播| 在线视频观看91| 色婷婷综合久色| 欧美xxxx视频| 亚洲一区三区视频在线观看| caoporen国产精品视频|