什么是Java?

Java是Sun Microsystems于1995年首次发布的一种编程语言和计算平台。编程语言还比较好理
解,那么什么是计算平台呢?

计算平台是在电脑中运行应用程序(软件)的环境,包括硬件环境和软件环境。一般系统平台包括一台电脑的硬件体系结构、操作系统、运行时库。

Java是快速,安全和可靠的。从笔记本 电脑到数据中心,从游戏机到科学超级计算机,从手机到互联
网,Java 无处不在! Java 主要分为三个版本

  • JavaSE(J2SE)(Java2 Platform Standard Edition,java平 台标准版)
  • JavaEE(J2EE)(Java 2 Platform,Enterprise Edition, java平 台企业版)
  • JavaME(J2ME)(Java 2 Platform Micro Edition, java平台微型版)。

为什么Java应用最广泛?

从互联网到企业平台,Java是应用最广泛的编程语言,原因在于:

  • Java是基于JVM虚拟机的跨平台语言,一次编写,到处运行;
  • Java程序易于编写,而且有内置垃圾收集,不必考虑内存管理;
  • Java虚拟机拥有工业级的稳定性和高度优化的性能,且经过了长时期的考验;
  • Java拥有最广泛的开源社区支持,各种高质量组件随时可用。

Java语言常年霸占着三大市场:

  • 互联网和企业应用,这是Java EE的长期优势和市场地位;
  • 大数据平台,主要有Hadoop、Spark、Flink等,他们都是Java或Scala(一种运行于JVM的编程语言)开发的;
  • Android移动平台。

这意味着Java拥有最广泛的就业市场。

Java的特点

Java是一门面向对象的编程语言

  • 什么是面向对象?面向对象(Object Oriented) 是一 种软件开发思想。它是对现实世界的一种抽象,面向对象会把相关的数据和方法组织为一个整体来看待。相对的另外一种开发思想就是面向过程的开发思想,什么面向过程?面向过程(ProcedureOriented)是一种以过程为中心的编程思想。举个例子:比如你是个学生,你每天去上学需要做几件事情?

起床、穿衣服、洗脸刷牙,吃饭,去学校。一般是顺序性的完成-系列动作。

  1. class student {
  2. void student_wakeUp(){...}
  3. void student_cloth(){...}
  4. void student_wash(){...}
  5. void student_eating(){...}
  6. void student_gotoSchool(){...}
  7. }

而面向对象可以把学生进行抽象,所以这个例子就会变为

  1. class student(){
  2. void wakeUp(){...}
  3. void cloth({...}
  4. void wash(){...}
  5. void eating(){...}
  6. void gotoSchool(){..}
  7. }
  • Java摒弃了C++中难以理解的多继承、指针、内存管理等概念;不用手动管理对象的生命周期,这是特征二。.
  • Java语言具有功能强大和简单易用两个特征,现在企业级开发,快速敏捷开发,尤其是各种框架的出现,使Java成为越来越火的一一门语言。这是特点三。
  • Java是一门静态语言,静态语言指的就是在编译期间就能够知道数据类型的语言,在运行前就能够检查类型的正确性,-旦类型确定后就不能再更改,比如下面这个例子。

    1. public void foo() {
    2. int x=5;
    3. boolean b = x;
    4. }

    相对应的,动态语言没有任何特定的情况需要指定变量的类型,在运行时确定的数据类型。比如有Lisp,
    Perl, Python、Ruby、JavaScript 等。
    从设计的角度上来说,所有的语言都是设计用来把人类可读的代码转换为机器指令。动态语言是为了能
    够让程序员提高编码效率,因此你可以使用更少的代码来实现功能。静态语言设计是用来让硬件执行的
    更高效,因此需要程序员编写准确无误的代码,以此来让你的代码尽快的执行。从这个角度来说,静态
    语言的执行效率要比动态语言高,速度更快。这是特点四。

  • Java具有平台独立性和可移植性

Java有-句非常著名的口号: Write once,run anywhere ,也就是一次编写、到处运行。为什么
Java能够吹出这种牛批的口号来?核心就是JVM 。我们知道,计算机应用程序和硬件之间会屏蔽很多
细节,它们之间依靠操作系统完成调度和协调,大致的体系结构如下

image.png
那么加上Java应用、JVM的体系结构会变为如下

image.png
Java是跨平台的,已编译的Java程序可以在任何带有JVM的平台上运行。你可以在Windows平台
下编写代码,然后拿到Linux平台下运行,该如何实现呢?
首先你需要在应用中编写Java代码;

Eclipse或者javac 把Java代码编译为class 文件;
然后把你的.class 文件打成. jar 文件;
然后你的.jar 文件就能够在Windows、Mac OS X、Linux 系统下运行了。不同的操作系统有不同的
JVM实现,切换平台时,不需要再次编译你的Java代码了。这是特点五。

  • Java能够容易实现多线程

Java是一门高级语言,高级语言会对用户屏蔽很多底层实现细节。比如Java是如何实现多线程的。从
操作系统的角度来说,实现多线程的方式主要有下面这几种
在用户空间中实现多线程
在内核空间中实现多线程
在用户和内核空间中混合实现线程
而我认为Java应该是在用户空间实现的多线程,内核是感知不到Java存在多线程机制的。这是特
点六。

  • Java具有高性能

我们编写的代码,经过javac编译器编译称为字节码(bytecode),经过JVM内嵌的解释器将字节码
转换为机器代码,这是解释执行,这种转换过程效率较低。但是部分JVM的实现比如Hotspot JVM
都提供了JIT(Just-In-Time) 编译器, 也就是通常所说的动态编译器,JIT 能够在运行时将热点代
码编译机器码,这种方式运行效率比较高,这是编译执行。所以Java不仅仅只是-种解释执行的语
言。这是特点七。

  • Java语言具有健壮性

Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。这也是Java与C
语言的重要区别。这是特点八。

  • Java很容易开发分布式项目

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