第一部分:Java

 

 

计算机语言介绍

 

第一代语言:机器语言。指令以二进制代码形式存在

 

第二代语言:汇编语言。使用助记符表示一条机器指令

 

第三代语言高级语言

  • C、Pascal、Fortran面向过程的语言

  • C++面向过程/面向对象

  • Java跨平台的纯面向对象的语言

  • .NET跨语言的平台

  • Python、Scala…

 

 

Java基础知识图解

 

Java和Scala的前世今生_java

 

Java语言简史

 

Java和Scala的前世今生_java语言_02

 

 

Java语言概述

 

 

Java技术体系

 

  • Java SE(Java Standard Edition)标准版

 

支持面向桌面级应用(如Windows下的应用程序)的Java平台,提供了完整的Java核 心API,此版本以前称为

 

  • J2SEJava EE(Java Enterprise Edition)企业版

 

是为开发企业环境下的应用程序提供的一套解决方案。该技术体系中包含的技术如:Servlet 、Jsp等,主要针对于Web应用程序开发。版本以前称为J2EE

 

  • Java ME(Java Micro Edition)小型版

 

支持Java程序运行在移动终端(手机、PDA)上的平台,对Java API有所精简,并加入了针对移动终端的支持,此版本以前称为J2ME

 

  • Java Card

 

支持一些Java小程序(Applets)运行在小内存设备(如智能卡)上的平台

 

Java在各领域的应用

 

  • 企业级应用

 

主要指复杂的大企业的软件系统、各种类型的网站。Java的安全机制以及它的跨平台的优势,使它在分布式系统领域开发中有广泛应用。应用领域包括金融、电信、交通、电子商务等。

 

  • Android平台应用

 

Android应用程序使用Java语言编写。Android开发水平的高低很大程度上取决于Java语言核心能力是否扎实。 

 

  • 大数据平台开发

 

各类框架有Hadoop,spark,storm,flink等,就这类技术生态圈来讲,还有各种中间件如flume,kafka,sqoop等等 ,这些框架以及工具大多数是用Java编写而成,但提供诸如Java,scala,Python,R等各种语言API供编程。

 

  • 移动领域应用

 

主要表现在消费和嵌入式领域,是指在各种小型设备上的应用,包括手机、PDA、机顶盒、汽车通信设备等。

 

Java语言主要特性

 

  • Java语言是易学的

 

Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。 

 

  • Java语言是强制面向对象的

 

Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。

 

  • Java语言是分布式

 

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

 

  • Java语言是健壮的

 

Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。

 

  • Java语言是安全的

 

Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。如:安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查。

 

  • Java语言是体系结构中立的

 

Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。

 

  • Java语言是解释型的

 

如前所述,Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统的解释器中运行。

 

  • Java是性能略高的

 

与那些解释型的高级脚本语言相比,Java的性能还是较优的。

 

  • Java语言是原生支持多线程的

 

在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建

 

Java运行机制及过程

 

  • 跨平台

 

Java和Scala的前世今生_java程序_03

 

有了JVM,同一个Java 程序在三个不同的操作系统中都可以执行。这样就实现了Java 程序的跨平台性。

 

  • Java两种核心机制

 

Java虚拟机 (Java Virtal Machine) 

 

垃圾收集机制 (Garbage Collection)

 

  • Java虚拟机

 

  1. JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。

  2. 负责执行指令,管理数据、内存、寄存器。对于不同的平台,有不同的虚拟机。

  3. 只有某平台提供了对应的java虚拟机,java程序才可在此平台运行

  4. Java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行

 

Java和Scala的前世今生_scala_04

 

  • 垃圾收集机制

 

  1. 在C/C++等语言中,由程序员负责回收无用内存。

  2. Java 语言消除了程序员回收无用内存空间的责任:它提供一种系统级线程跟踪存储空间的分配情况。并在JVM空闲时,检查并释放那些可被释放的存储空间。

  3. 垃圾回收在Java程序运行过程中自动进行,程序员无法精确控制和干预。

 

第一部分:Scala

 

Scala语言

 

为什么要学Scala

 

  • Spark—新一代内存级大数据计算框架,是大数据的重要内容。

  • Spark就是使用Scala编写的。因此为了更好的学习Spark, 需要掌握Scala这门语言。

  • Spark的兴起,带动Scala语言的发展!


Scala语言发展

 

联邦理工学院的马丁·奥德斯基(Martin Odersky)于2001年开始设计Scala。马丁·奥德斯基是编译器及编程的狂热爱好者,长时间的编程之后,希望发明一种语言,能够让写程序这样的基础工作变得高效,简单。所以当接触到JAVA语言后,对JAVA这门便携式,运行在网络,且存在垃圾回收的语言产生了极大的兴趣,所以决定将函数式编程语言的特点融合到JAVA中,由此发明了两种语言(Pizza & Scala)。

 

Pizza和Scala极大地推动了Java编程语言的发展。

 

  • jdk5.0 的泛型,for循环增强,自动类型转换等,都是从Pizza 引入的新特性。

  • jdk8.0 的类型推断,Lambda表达式就是从Scala引入的特性。

 

Jdk5.0和Jdk8.0的编辑器就是马丁·奥德斯基写的,因此马丁·奥德斯基一个人的战斗力抵得上一个Java开发团队。

 

Scala和Java的关系

 

一般来说,学Scala的人,都会Java,而Scala是基于Java的,因此我们需要将Scala和Java以及JVM 之间的关系搞清楚,否则学习Scala你会蒙圈。

 

Java和Scala的前世今生_scala_05

 

Scala语言特点

 

Scala是一门以Java虚拟机(JVM)为运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言。

  • Scala是一门多范式的编程语言,Scala支持面向对象和函数式编程。

  • Scala源代码(.scala)会被编译成Java字节码(.class),然后运行于JVM之上,并可以调用现有的Java类库,实现两种语言的无缝对接

  • Scala单作为一门语言来看,非常的简洁高效。

  • Scala在设计时,马丁·奥德斯基是参考了Java的设计思想,可以说Scala是源于Java,同时马丁·奥德斯基也加入了自己的思想,将函数式编程语言的特点融合到JAVA中, 因此,对于学习过Java的同学,只要在学习Scala的过程中,搞清楚Scala和Java相同点和不同点,就可以快速的掌握Scala这门语言。

 

Java和Scala的前世今生_java虚拟机_06