1. 程式人生 > >Java和Scala的區別?

Java和Scala的區別?

1、什麼是Scala

Scala是一種多正規化的程式語言,其設計的初衷是要整合面向物件程式設計和函數語言程式設計的各種特性。Scala運行於Java平臺(Java虛擬機器),併兼容現有的Java程式。

2、為什麼要學Scala

1.優雅:這是框架設計師第一個要考慮的問題,框架的使用者是應用開發程式設計師,API是否優雅直接影響使用者體驗。

2.速度快:Scala語言表達能力強,一行程式碼抵得上Java多行,開發速度快;Scala是靜態編譯的,所以和JRuby,Groovy比起來速度會快很多。

3. 能融合到Hadoop生態圈:Hadoop現在是大資料事實標準,Spark並不是要取代Hadoop,而是要完善Hadoop生態。JVM語言大部分可能會想到Java,但Java做出來的API太醜,或者想實現一個優雅的API太費勁。

========================================================

1、什麼是Java?

Java是一門面向物件程式語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態面向物件程式語言的代表,極好地實現了面向物件理論,允許程式設計師以優雅的思維方式進行復雜的程式設計。

2、為什麼要學Java?

Java具有簡單性、面向物件、分散式、健壯性、安全性、平臺獨立與可移植性、多執行緒、動態性等特點 [2] 。Java可以編寫桌面應用程式、Web應用程式、分散式系統和嵌入式系統應用程式等 。

java和scala的表格對比

----- java scala
1、對字串的支援 Java需要採用“+”進行字串的連線。 scala採用三個雙引號“”“支援換行字串
2、方法返回值 Java需要顯示的採用return進行值的返回。 scala的return是可選的,方法呼叫會自動返回最後求值的表示式。如果scala使用了return則需要顯示指定方法的返回值
3、類和方法修飾符的預設值 java預設是protected. scala預設是public
4、預設匯入的類 java預設匯入java.lang包 scala預設匯入java.lang包、scala包、scala.Predef類。
5、介面 java支援介面 scala不支援介面interface,採用trait(類似於Java中的抽象類)。
6、類成員和單例物件 java由類成員,單例物件需要自己實現。 scala語言機制上支援單例物件和伴生物件,伴生類。伴生類和伴生物件需要在一個類檔案中使用,在使用伴生物件時,系統隱式地呼叫apply生成一個伴生例項的物件。

1、對字串的支援 scala採用三個雙引號“”“支援換行字串,Java需要採用“+”進行字串的連線。 2、方法返回值 scala的return是可選的,方法呼叫會自動返回最後求值的表示式。如果scala使用了return則需要顯示指定方法的返回值 Java需要顯示的採用return進行值的返回。 3、類和方法修飾符的預設值 scala預設是public,java預設是protected. 4、預設匯入的類 scala預設匯入java.lang包、scala包、scala.Predef類。 java預設匯入java.lang包 5、介面 scala不支援介面interface,採用trait(類似於Java中的抽象類)。 java支援介面 6、類成員和單例物件 scala語言機制上支援單例物件和伴生物件,伴生類。伴生類和伴生物件需要在一個類檔案中使用,在使用伴生物件時,系統隱式地呼叫apply生成一個伴生例項的物件。 java由類成員,單例物件需要自己實現。

相關推薦

JavaScala區別?

1、什麼是Scala Scala是一種多正規化的程式語言,其設計的初衷是要整合面向物件程式設計和函數語言程式設計的各種特性。Scala運行於Java平臺(Java虛擬機器),併兼容現有的Java程式。

爬坑:spark專案打包報錯(javascala混編)

專案打包:mvn clean package -DskipTests java和scala混編打包 報錯: /Users/rocky/source/work/sparktrain/src/main/scala/com/zoujc/spark/project/dao/CourseSearchC

使用javascala編寫spark-WordCount示例

前言:     最近博主在學習spark相關知識,感覺是個挺不錯的框架,它的分散式處理大資料集的思想還是值得我們好好學習的。     個人感覺以後java開發肯定不僅僅是SSM這一套東西了,當資料量越來越大時,我們需要學習使用這些大資料工具。

Spark中RDD轉換成DataFrame的兩種方式(分別用Javascala實現)

 一:準備資料來源       在專案下新建一個student.txt檔案,裡面的內容為: print? <code class="language-java">1,zhangsan,20   2,lisi,21   3,wanger,1

Spark-RDD轉Dataset及簡單的SparkSql操作(javascala版本)

一、程式設計式方法 (一)java版本 public class WordPro { private static SparkSession gloableSpark; private static Logger logger = LoggerFactory.getL

第59課:使用JavaScala在IDE中實戰RDDDataFrame轉換操作

內容:     1.RDD與DataFrame轉換的重大意義     2.使用Java實戰RDD與DataFrame轉換     3.使用Scala實戰RDD與dataFrame轉換 一.  RDD與DataFrame轉換的重大意義     1.在Spark中RDD可以

第67課:Spark SQL下采用JavaScala實現Join的案例綜合實戰(鞏固前面學習的Spark SQL知識)

內容:     1.SparkSQL案例分析     2.SparkSQL下采用Java和Scala實現案例 一、SparkSQL下采用Java和Scala實現案例 學生成績: {"name":"Michael","score":98} {"name":"Andy"

你所不知道的有關Java Scala中的同步問題

在實際應用中所有的服務端程式都需要在多執行緒之間進行某種同步。大多數同步已經有框架完成了,比如我們的web伺服器,DB客戶端和訊息框架。Java和Scala提供了大量的元件用來實現穩定的多執行緒程式。包括物件池,併發集合,高階鎖,執行上下文等。 為了更好的理解這些元件,我們深入瞭解一下最常用

Spark程式設計環境搭建(基於Intellij IDEA的Ultimate版本)(包含JavaScala版的WordCount)(博主強烈推薦)

  為什麼,我要在這裡提出要用Ultimate版本。 基於Intellij IDEA搭建Spark開發環境搭——參考文件 操作步驟   a)建立maven 專案   b)引入依賴(Spark 依賴、打包外掛等等) 基於Intellij

Java IOS 區別

Java介面與Objective-C正式協議類似,因為都需要實現     一組方法。Java具有抽象類,但Objective-C沒有。Java具有類變數,但Objective-C中,可以使用檔案範圍內的全域性變數併為它們提供對應的訪問器。Objective-C的公共和私有方

maven建立javascala混合的專案

專案需求:我們採用spark開發專案,使用的開發語言採用java和scala的混合,這個時候我們的專案需要支援java和scala,一般方法兩種 (1)通過IDEA開發工具,下載SBT安裝包,通過SBT建立專案,自動支援java和scala比較方便,但包的下載很慢 (2)專

第59課:使用JavaScala在IDE中實戰RDDDataFrame轉換操作’學習筆記

第59課:使用Java和Scala在IDE中實戰RDD和DataFrame轉換操作’學習筆記 本期內容: 1  RDD與DataFrame轉換的重大意義 2  使用Java實戰RDD與DaraFrame轉換 3  使用Scala實戰RDD與DataFrame轉換 一.  

[java多執行緒]關於JavaScala同步機制你不知道的5個真相

實際上,所有的伺服器應用在多執行緒中都需要某種型別的同步機制。框架已經為我們做了大多數的同步的工作,這些框架包括web伺服器、資料庫連線客戶端、訊息框架等。我們可以通過Java和Scala提供的多種元件來寫出可靠的多執行緒應用。這些元件包括,物件池、併發集合類、高階鎖、執

Maven專案 混合編譯JavaScala

建立maven-scala專案後,會生成相應的pom檔案。把maven-surefire-plugin的外掛註釋掉或者直接刪掉。然後加入maven-shade-plugin的外掛配置。 接下來正常編寫程式執行專案時,由於java和scala程式碼相互呼叫,所以

JAVAC++區別

數據類型 代碼 基礎 自身 繼承 字符串 崩潰 支持 阻止 Java和C++都是面向對象語言。也就是說,它們都能夠實現面向對象思想(封裝,繼乘,多態)。而由於c++為了照顧大量的C語言使用者, 而兼容了C,使得自身僅僅成為了帶類的C語言,多多少少影響了其面向對象的徹底性!J

java中ArrayListLinkedList區別

插入 list 新的 查找 arr tro 基於 列表 時間復雜度 ArrayList和LinkedList最主要的區別是基於不同數據結構 ArrayList是基於動態數組的數據結構,LinkedList基於鏈表的數據結構,針對這點,從時間復雜度和空間復雜度來看主要區別:

201671010139 2016-2017-2 JAVA C語言的語法區別

tro 特點 建立 優點 cor ext 虛函數 ref strong   java和c語言的語法上有很多相似的地方,但也有很多不同。 一,在初始值的區別   在C語言中,是可以不初始化使用的   而在JAVA中,是必須初始化值的 二,在抽象方法或抽象類的區別   C語言的

淺談java中的"=="eqals區別

short copy 覆寫 main 否則 變量 程序 bar gif 在初學Java時,可能會經常碰到下面的代碼: 1 String str1 = new String("hello"); 2 String str2 = new String("hello");

java中equals,hashcode==的區別

nat 等號 bsp alt star object 名稱 改變 set 1、== java中的數據類型,可分為兩類: 1.基本數據類型,也稱原始數據類型 byte,short,char,int,long,float,double,boolean 他們之間的比較,應用雙

JavaC++的區別

必須 java 增強 然而 開發 idt pac 結合 面向對象的語言 1.指針 JAVA語言讓編程者無法找到指針來直接訪問內存,並且增添了自動的內存管理功能,從而有效地防止了c/c++語言中指針操作失誤,如野指針所造成的系統崩潰。但也不是說JAVA沒有指針,虛擬機內部還是