Java小白进阶笔记(1)-重新认识Java
重新开始学习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
本文为云栖社区原创内容,未经允许不得转载。