什么是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)是一种以过程为中心的编程思想。举个例子:比如你是个学生,你每天去上学需要做几件事情?
起床、穿衣服、洗脸刷牙,吃饭,去学校。一般是顺序性的完成-系列动作。
class student {
void student_wakeUp(){...}
void student_cloth(){...}
void student_wash(){...}
void student_eating(){...}
void student_gotoSchool(){...}
}
而面向对象可以把学生进行抽象,所以这个例子就会变为
class student(){
void wakeUp(){...}
void cloth({...}
void wash(){...}
void eating(){...}
void gotoSchool(){..}
}
- Java摒弃了C++中难以理解的多继承、指针、内存管理等概念;不用手动管理对象的生命周期,这是特征二。.
- Java语言具有功能强大和简单易用两个特征,现在企业级开发,快速敏捷开发,尤其是各种框架的出现,使Java成为越来越火的一一门语言。这是特点三。
Java是一门静态语言,静态语言指的就是在编译期间就能够知道数据类型的语言,在运行前就能够检查类型的正确性,-旦类型确定后就不能再更改,比如下面这个例子。
public void foo() {
int x=5;
boolean b = x;
}
相对应的,动态语言没有任何特定的情况需要指定变量的类型,在运行时确定的数据类型。比如有Lisp,
Perl, Python、Ruby、JavaScript 等。
从设计的角度上来说,所有的语言都是设计用来把人类可读的代码转换为机器指令。动态语言是为了能
够让程序员提高编码效率,因此你可以使用更少的代码来实现功能。静态语言设计是用来让硬件执行的
更高效,因此需要程序员编写准确无误的代码,以此来让你的代码尽快的执行。从这个角度来说,静态
语言的执行效率要比动态语言高,速度更快。这是特点四。Java具有平台独立性和可移植性
Java有-句非常著名的口号: Write once,run anywhere ,也就是一次编写、到处运行。为什么
Java能够吹出这种牛批的口号来?核心就是JVM 。我们知道,计算机应用程序和硬件之间会屏蔽很多
细节,它们之间依靠操作系统完成调度和协调,大致的体系结构如下
那么加上Java应用、JVM的体系结构会变为如下
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 (远程方法激活)机制也是开发分布
式应用的重要手段。这是特点九。