[英]What Are The Benefits Of Scala?
我是一名Java開發人員,我想知道如何在Java程序中使用Scala?
閱讀Daniel Spiewak關於Scala 的精彩博客系列 。 使用Scala,您可以保留:
但是你可以編寫Scala代碼:
另外,請看看Scala網站上最近的新聞帖:“ 研究:編程風格和生產力 ”。
在他的論文中, Gilles Dubochet描述了他如何使用眼動追蹤調查編程風格的兩個方面。 他發現使用for-comprehension和map的算法平均快30%,就像在Scala中那樣,而不是那些具有Java迭代while循環的算法。
新聞項目的另一個重要引用:
在Scala為電力貿易公司撰寫關鍵任務項目的Alex McGuire對Scala說:“簡潔意味着我可以在一個屏幕上看到更多的程序。你可以得到更好的概述。當我有一些數學模型可以用Java我必須保留兩個模型,數學模型本身,第二個模型是如何用Java實現它。使用Scala一個模型,數學模型,將會更有效率。“
你讀了帖子的其余部分和那里的其他鏈接項目。
從我有限的經驗中,我可以用非常簡單的語言命名一些極其明確的觀點:
屬性。 C ++和Java有一個公共getter / setter函數“property”的概念,它包含一個內部類變量,導致大量的樣板代碼。 C#將其形式化為一種真正的語言特性,並通過自動實現的屬性減少了C#3.0中的大部分樣板。 Scala類將簡單屬性定義為常規只讀val或讀/寫變量。 該類可能稍后選擇使用get或get / set方法替換它們而不影響客戶端代碼。 為此,Scala提供了最優雅的解決方案,具有最少的語言功能和復雜性。
數組使用常規泛型。 在Java / C#中,泛型作為一種思想被拴在一起,並且是完全獨立的但是與數組有重疊的行為。
Scala具有不變的“val”作為一流的語言特征。 實際上,val類似於Java最終變量:頂部引用是不可變的,但內容可能會發生變異。
Scala允許塊,for-yield循環和大括號中的代碼返回一個值。 在許多情況下,這是非常優雅的。 一個非常小的優點是,這消除了對單獨的三元運算符的需求。
Scala具有單例對象而不是C ++ / Java / C#類靜態。 這是一個更清潔的解決方案
模式匹配。 對象拆包。 在很多情況下非常好。
原生元組。
持久不可變集合是默認集合並內置於標准庫中。
我不確定您是否可以在Java程序中輕松使用Scala,例如“從Java類調用Scala類”。
您可以按照“ 混合Java和Scala ”一文進行嘗試。
相關摘錄:
問題是Java和Scala編譯步驟是分開的:您不能一次編譯Java和Scala文件。
如果您的Java文件都沒有引用任何Scala類,則可以先編譯所有Java類,然后編譯Scala類。
或者,如果您的Scala文件都沒有引用任何Java類,那么您可以反過來這樣做。
但是,如果您希望Java類可以訪問您的Scala類,並且Scala類也可以訪問您的Java類,那就是一個問題。Scala代碼可以很容易地直接調用Java代碼,但有時從Java代碼調用Scala代碼比較棘手,因為從Scala到字節碼的轉換並不像Java那么簡單:
有時,Scala編譯器會在符號中添加字符,或者在從Java調用時進行必須顯式處理的其他更改。
但是Scala類可以實現Java接口,並且該類的實例可以傳遞給期望接口實例的Java方法。
然后,Java類在該實例上調用接口方法,就像它是Java類實例一樣。
當然,正如Danup Spiewak的 Roundup:Scala for Java Refugees所述 ,情況正好相反 。
Scala或Java:
優點:
缺點:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.