Java小白进阶笔记(1)-重新认识Java

zhll 2019-06-27

重新开始学习Java了,这也是为了以后找工作考虑。热爱的机器学习就先放一放了,作为兴趣爱好研究,不花太多精力了>﹏<

1.偏头痛杨的Java入门教学系列之认识Java篇

这是偏头痛杨的第一篇原文链接,其中,在系列的第二篇开头作者布置了十道题,下面是我的回答(大多是作者的文章摘录)。

2.Java为什么能跨平台?

跨平台是指跨不同的操作系统,因为从写java代码到运行,需要经过两个过程,Java程序的源代码(.java)编译成虚拟机(JVM)能看懂的字节码(.class),然后再由虚拟机解释执行成对应的操作系统能看懂的机器码。
从而实现了所谓的跨平台,一次编译处处执行(Write Once,Run Anywhere)。
需要注意的是不同操作系统上要装对应的JVM,但这并不与跨平台冲突,因为即使不同操作系统上的虚拟机的一些细节是不一样的,但它们所能看懂的字节码(.class)都是一样的,而字节码是与平台无关的。

3.Java抄了哪个编程语言?

C++

4.Java是由哪个公司搞出来的?

Sun公司

5.Java的爸爸是谁?

詹姆斯-高斯林

6.Java的工作机制?

Java程序的源代码(.java)编译成虚拟机(JVM)能看懂的字节码(.class),然后再由虚拟机解释执行成对应的操作系统能看懂的机器码

7.JDK&JRE&JVM分别是什么以及他们的关系?

JVM(Java Virtual Machine):
Java虚拟机,主要负责运行Java编译器编译后的字节码文件(*.class文件),它存在于内存中,与内存打交道。
JVM运行在操作系统之上,与硬件没有直接交互,JVM是实现跨平台的核心。
JVM是一种抽象&虚拟出来的计算机,和实际的计算机一样,
它具有指令集并使用不同的存储区域,它负责执行指令,还要管理数据,内存和寄存器,指令集,寄存器,
类文件的格式,栈,垃圾回收堆,存储区等。
JVM在执行字节码时,把字节码解释成具体平台上的机器码执行。
JVM自己无法执行,必须要联合JRE中的Java基础&核心类库才能使用。

JRE(Java Runtime Environment):
Java运行环境,支持Java程序运行的标准环境,包括了JVM(Java虚拟机)的标准实现以及Java基础&核心类库。

jre1.8目录包含:
bin:有java.exe但没有javac.exe,无法编译Java程序,但可以运行Java程序,可以把这个bin目录理解成JVM。
lib:Java基础&核心类库,如rt.jar,也包含JVM运行时需要的类库。
JRE=JVM+Java基础&核心类库

JDK(Java Development Kit):
Java开发工具包,是一个编写Java应用程序的开发环境(程序员专用)。
JDK是整个Java的核心,包括了JRE(Java运行环境)与一些Java开发工具(例如:jconsole、javac、java、javadoc、native2ascii、jar等)。
主流的JDK是Sun公司发布的JDK,除了Sun公司之外,还有很多公司和组织都开发了自己的JDK,
例如:IBM公司开发的JDK,BEA公司的JDK,还有GNU组织开发的JDK。

jdk1.8目录包含:
bin:一堆exe文件,可执行的开发工具,最主要的是javac, 例如:jconsole、javac、java、javadoc、native2ascii。
jre:java运行环境,包括JVM+Java基础&核心类库 。
lib:包含dt.jar+tools.jar的常用类库,开发依赖包。
db:jdk从1.6之后内置了Derby数据库,它是是一个纯用Java实现的内存数据库,属于Apache的一个开源项目。用Java实现的,所以可以在任何平台上运行;另外一个特点是体积小,免安装,只需要几个小jar包就可以运行了。
include:java和JVM交互用的头文件。
JDK=JRE+Java开发工具(编译器、调试器等)

JDK&JRE&JVM总结:
JRE是个运行环境,JDK是个开发环境,因此写Java程序的时候需要JDK,而运行Java程序的时候就需要JRE。
而JDK里面已经包含了JRE,因此只要安装了JDK,就可以开发Java程序,也可以正常运行Java程序。
但由于JDK包含了许多与运行无关的内容,例如编译器、调试器等,占用的空间较大,
因此运行普通的Java程序无须安装JDK,而只需要安装JRE即可(例如在服务器中运行Java程序)。

8.Java的应用场景?

互联网应用的服务端程序(包括分布式系统)
很多第三方交易系统、银行、金融机构、大型网站、互联网平台都选择用Java开发。
大多数情况下,Java被用在服务器端开发,但多数没有任何前端,它们通常是从一个服务器接收数据,
处理后发向另一个处理系统。

Android应用
许多的 Android应用都是Java程序员开发者开发。虽然 Android运用了不同的JVM以及不同的封装方式,
但是代码还是用Java语言所编写。相当一部分的手机中都支持JAVA游戏,这就使很多非编程人员都认识了JAVA。

大数据技术
Hadoop以及其他大数据处理技术很多都是用Java,例如Apache的基于Java的HBase和Accumulo以及 ElasticSearchas。

网站
Java在电子商务领域以及网站开发领域占据了一定的席位。开发人员可以运用许多不同的框架来创建web项目,
SpringMVC,Struts2.0以及frameworks。即使是简单的 servlet,jsp和以struts为基础的网站在政府项目中也经常被用到。
例如医疗救护、保险、教育、国防以及其他的不同部门网站都是以Java为基础来开发的。

嵌入式领域
Java在嵌入式领域发展空间很大。在这个平台上,只需130KB就能够使用Java技术(在智能卡或者传感器上)。

桌面应用
例如:jmeter,netbeans,freemind,eclipse等。

游戏
火遍全球的《我的世界》以及一堆java小游戏。

9.java与javac命令的作用?

javac命令是在jdk的bin文件夹下的,作用是将Java源程序(.java)编译为虚拟机能明白的字节码(.class)

java命令是在jre的bin文件夹下的,作用是将虚拟机中的字节码(.class)解释执行成对应平台操作系统能明白的机器码。

10.Java环境如何配置?

这个省略,去看作者(偏头痛杨)的文章,或者百度都能OK!

11.Java的部分特点?

跨平台
重要的网络编程语言
吸收了C++的优点,摒弃了多继承,指针的概念
不仅仅是一门语言,还是一个庞大的技术体系(包括编程语言、虚拟机、- - 开发环境、应用程序环境、部署环境等)

本文作者:kissjz

阅读原文

本文为云栖社区原创内容,未经允许不得转载。

相关推荐

citic / 0评论 2020-06-16