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

Java以外的選擇 Scala編程語言簡介

開發 后端
在歷史上,Java平臺一直屬于面向對象編程的領域,但是現在Java 語言的堅定支持者也開始注意應用程序開發中的一種新趨勢:函數編程。在這個新的系列中,Scala抓住了很多開發者的眼球,Scala是一種針對 JVM 將函數和面向對象技術組合在一起的編程語言。在本文中,將向你簡單介紹編程語言——Scala。

51CTO編輯推薦:Scala編程語言專題

Scala編程語言近來抓住了很多開發者的眼球。如果你粗略瀏覽Scala的網站,你會覺得Scala是一種純粹的面向對象編程語言,而又無縫地結合了命令式和函數式的編程風格。

Christopher Diggins認為:不太久之前編程語言還可以毫無疑義地歸類成“命令式”或者“函數式”。Scala代表了一個新的語言品種,它抹平了這些人為劃分的界限。

根據David Rupp在博客中的說法,Scala可能是下下一代Java。這么高的評價讓人不禁想看看它到底是什么東西。

一種可伸縮語言

Scala 的名稱表明,它還是一種高度可伸縮的語言。

Scala 是一種函數對象混合的語言,具有一些強大的優點:

◆ 首先,Scala 可編譯為 Java 字節碼,這意味著它在 JVM 上運行。除了允許繼續利用豐富的 Java 開源生態系統之外,Scala 還可以集成到現有的 IT 環境中,無需進行遷移。

◆ 其次,Scala 基于 Haskell 和 ML 的函數原則,大量借鑒了 Java 程序員鐘愛的面向對象概念。因此,它可以將兩個領域的優勢混合在一起,從而提供了顯著的優點,而且不會失去我們一直依賴的熟悉的技術。

◆ 最后,Scala 由 Martin Odersky 開發,他可能是 Java 社區中研究 Pizza 和 GJ 語言的最著名的人,GJ 是 Java 5 泛型的工作原型。而且,它給人一種 “嚴肅” 的感覺;該語言并不是一時興起而創建的,它也不會以同樣的方式被拋棄。

Scala有幾項關鍵特性表明了它的面向對象的本質。例如,Scala中的每個值都是一個對象,包括基本數據類型(即布爾值、數字等)在內,連函數也是對象。另外,類可以被子類化,而且Scala還提供了基于mixin的組合(mixin-based composition)。

與只支持單繼承的語言相比,Scala具有更廣泛意義上的類重用。Scala允許定義新類的時候重用“一個類中新增的成員定義(即相較于其父類的差異之處)”。Scala稱之為mixin類組合。

Scala還包含了若干函數式語言的關鍵概念,包括高階函數(Higher-Order Function)、局部套用(Currying)、嵌套函數(Nested Function)、序列解讀(Sequence Comprehensions)等等。

Scala中常用的一些設計模式:

◆ Singleton(單體模式)

◆ Strategy(策略模式)

◆ Factory(工廠模式)

◆ Vistor(訪問者模式)

◆ Decorator(裝飾模式)  

與許多最近開始在 Java 平臺上占有一席之地的動態語言不同,Scala 是靜態類型的,這就允許它提供泛型類、內部類、甚至多態方法(Polymorphic Method),正如 Java 代碼一樣。但是,與 Java 平臺不同,Scala 大量利用了類型推斷(type inferencing),這意味著,編譯器深入分析代碼以確定特定值的類型,無需編程人員干預。類型推斷需要較少的冗余類型代碼。另外值得一提的是,Scala被特意設計成能夠與Java和.NET互操作。Scala當前版本還不能在.NET上運行(雖然上一版可以-_-b),但按照計劃將來可以在.NET上運行。

大量的其他函數功能(比如模式匹配)已經被引入到 Scala 語言中,但是將其全部列出超出了本文的范圍。Scala 還添加許多目前 Java 編程中沒有的功能,比如操作符重載(它完全不像大多數 Java 開發人員所想象的那樣), 具有 “更高和更低類型邊界” 的泛型、視圖等。與其他功能相比,這些功能使得 Scala 在處理特定任務方面極其強大,比如處理或生成 XML。

Scala可以與Java互操作。它用scalac這個編譯器把源文件編譯成Java的class文件(即在JVM上運行的字節碼)。你可以從Scala中調用所有的Java類庫,也同樣可以從Java應用程序中調用Scala的代碼。用David Rupp的話來說,它也可以訪問現存的數之不盡的Java類庫,這讓(潛在地)遷移到Scala更加容易。

這讓Scala得以使用為Java1.4、5.0或者6.0編寫的巨量的Java類庫和框架,Scala會經常性地針對這幾個版本的Java進行測試。Scala可能也可以在更早版本的Java上運行,但沒有經過正式的測試。Scala以BSD許可發布,并且數年前就已經被認為相當穩定了。

說了這么多,我們還沒有回答一個問題:“為什么我要使用Scala?”Scala的設計始終貫穿著一個理念:

創造一種更好地支持組件的語言。(《The Scala Programming Language》,Donna Malayeri)

也就是說軟件應該由可重用的部件構造而成。Scala旨在提供一種編程語言,能夠統一和一般化分別來自面向對象和函數式兩種不同風格的關鍵概念。

藉著這個目標與設計,Scala得以提供一些出眾的特性,包括:

◆ 面向對象風格

◆ 函數式風格

◆ 更高層的并發模型

Scala把Erlang風格的基于actor的并發帶進了JVM。開發者現在可以利用Scala的actor模型在JVM上設計具伸縮性的并發應用程序,它會自動獲得多核心處理器帶來的優勢,而不必依照復雜的Java線程模型來編寫程序。

◆ 輕量級的函數語法

a. 高階

b. 嵌套

c. 局部套用(Currying)

d. 匿名

◆ 與XML集成

a. 可在Scala程序中直接書寫XML

b. 可將XML轉換成Scala類

◆ 與Java無縫地互操作

Scala的風格和特性已經吸引了大量的開發者,比如Debasish Ghosh就覺得:我已經把玩了Scala好一陣子,可以說我絕對享受這個語言的創新之處。

總而言之,Scala是一種函數式面向對象語言,它融匯了許多前所未有的特性,而同時又運行于JVM之上。隨著開發者對Scala的興趣日增,以及越來越多的工具支持,無疑Scala語言將成為你手上一件必不可少的工具。

【編輯推薦】

  1. Java之外,選擇Scala還是Groovy?
  2. 如何利用Scala簡化XML處理
責任編輯:楊鵬飛 來源: 51CTO整理
相關推薦

2010-09-14 13:22:17

Scala編程指南Scala

2021-08-10 19:15:17

語言編程應用

2009-07-08 16:10:24

Scala簡介面向對象函數式

2009-07-08 12:43:59

Scala ServlScala語言

2014-06-04 10:52:56

Swift蘋果iOS

2010-03-12 10:48:22

Python編程語言

2014-06-03 10:44:20

Swift開發語言

2020-12-29 06:44:18

GoScala編程語言

2010-09-14 15:34:41

Scala

2009-08-11 08:46:21

Snow動態編程語言

2010-07-19 16:47:54

Perl

2020-10-31 17:33:18

Scala語言函數

2018-11-11 15:29:13

大數據語言Java

2011-08-31 09:03:09

ScalaAndroid編程語言

2012-05-25 11:26:56

LinuxWindows

2009-08-13 17:14:55

2018-08-21 13:50:05

編程語言JavaPython

2010-03-15 16:12:34

Python編程語言

2010-07-26 08:35:06

ScalaJava

2013-01-17 10:57:26

VMware VCPMCSAMCSE
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品揄拍一区二区 | 黄色三级免费 | 一区| 97伦理电影网 | 日韩精品一区二区三区中文在线 | 国产日韩中文字幕 | 色视频www在线播放国产人成 | 久久人人爽人人爽人人片av免费 | 中文字幕av一区 | 青青草av | 欧美午夜精品久久久久免费视 | 资源首页二三区 | 精品国产91亚洲一区二区三区www | 国产一区二区三区在线看 | 在线婷婷 | 欧美多人在线 | 久久久久久免费免费 | 欧美日韩激情 | 成人在线观看免费 | 亚洲欧美在线一区 | 中文字幕 欧美 日韩 | 久久综合成人精品亚洲另类欧美 | 成人h动漫亚洲一区二区 | 91精品国产91久久久久游泳池 | 久久99精品久久久久久秒播九色 | 亚洲国产一区二区在线 | 日韩小视频在线 | 伊人在线| 欧美午夜精品 | 亚洲人成人一区二区在线观看 | 九色91视频 | 91一区二区三区在线观看 | 91精品成人久久 | 久久精品一区二区三区四区 | 成人av鲁丝片一区二区小说 | 欧美极品在线观看 | 狠狠操狠狠色 | 一级黄在线观看 | 国产欧美一区二区三区在线播放 | 麻豆av免费观看 | 九九热免费看 |