这是程序员cxuan的第四篇硬核分享java
先来看一下本篇文章的思惟导图吧,我会围绕下面这些内容进行讲解。内容很干,小伙伴们看完还但愿不吝转发。(高清思惟导图版本关注做者公众号 Java建设者 回复 Java666 获取,其余思惟导图获取方式在文末)。程序员
下面开始咱们的文章。编程
什么是 Java?安全
Java 是 Sun Microsystems 于1995 年首次发布的一种编程语言和计算平台。编程语言还比较好理解,那么什么是 计算平台 呢?多线程
“计算平台是在电脑中运行应用程序(软件)的环境,包括硬件环境和软件环境。通常系统平台包括一台电脑的硬件体系结构、操做系统、运行时库。框架
Java 是快速,安全和可靠的。从笔记本电脑到数据中心,从游戏机到科学超级计算机,从手机到互联网,Java 无处不在!Java 主要分为三个版本编程语言
Java 的特色ide
Java 是一门面向对象的编程语言性能
什么是面向对象?面向对象(Object Oriented) 是一种软件开发思想。它是对现实世界的一种抽象,面向对象会把相关的数据和方法组织为一个总体来看待。编码
相对的另一种开发思想就是面向过程的开发思想,什么面向过程?面向过程(Procedure Oriented) 是一种以过程为中心的编程思想。举个例子:好比你是个学生,你天天去上学须要作几件事情?
起床、穿衣服、洗脸刷牙,吃饭,去学校。通常是顺序性的完成一系列动做。
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(){...} }
能够不用严格按照顺序来执行每一个动做。这是特色一。
public void foo() { int x = 5; boolean b = x; }
静态语言主要有 Pascal, Perl, C/C++, JAVA, C#, Scala 等。
相对应的,动态语言没有任何特定的状况须要指定变量的类型,在运行时肯定的数据类型。好比有Lisp, Perl, Python、Ruby、JavaScript 等。
从设计的角度上来讲,全部的语言都是设计用来把人类可读的代码转换为机器指令。动态语言是为了可以让程序员提升编码效率,所以你可使用更少的代码来实现功能。静态语言设计是用来让硬件执行的更高效,所以须要程序员编写准确无误的代码,以此来让你的代码尽快的执行。从这个角度来讲,静态语言的执行效率要比动态语言高,速度更快。这是特色四。
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 存在多线程机制的。这是特色六。
咱们编写的代码,通过 javac 编译器编译称为 字节码(bytecode),通过 JVM 内嵌的解释器将字节码转换为机器代码,这是解释执行,这种转换过程效率较低。可是部分 JVM 的实现好比 Hotspot JVM 都提供了 JIT(Just-In-Time) 编译器,也就是一般所说的动态编译