<<
JAVA: bytecode는 interpre언어이나.. 실행시 JIT Compiler가 기계어로 바꿔서 실행하므로 compile언어라고 본다.
Scala는 이와 동일하게 javabytecode로 바꾸는 방식을 그대로 따르며, 완전한 java bytecode를 이용한다. >>
이름에서 나와있듯이 scalable한 언어이다.
아래 1번 scalable이 6번 안전성과 관계를 좀 더 살펴봐야 할 것 같은데
어쨌던 Functional 언어의 등장 자체가
multi-core에서 안전성을 가지기 위해서 이므로..
6번의 안전성을 기반으로 1번 확장성도 가지게 된다고 개인적으로 보고 있다.
<Scala의 특징>
1. scalable
2. pure Object-Oriendted (java는 primitive가 Object가 아님)
3. Functional 언어
- Assignment를 없애서, 참조투명성(REFERENTIAL TRANSPARENCY) 을 확보.
4. Java 호환.
5. 함수도 객체.
6. future-Proof
7.Fun
< 기본 문법>
def : function이나 method를 선언할때 사용
val : reasign이 불가능한 상수를 선언할때 사용
var: reasign이 가능한 변수를 선언할때 사용
exam )
def helloWorld = println("hello world.")
val foo: Int = 1
var bar = "test"
<case Class>
new 없이 쓸 수 있고, getter필요없이 바로 .value 로 access.
Several Example : http://alvinalexander.com/scala/
<Flat Map>
http://alvinalexander.com/scala/collection-scala-flatmap-examples-map-flatten