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

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

重新开始学习Java了,这也是为了以后找工作考虑。热爱的机器学习就先放一放了,作为兴趣爱好研究,不花太多精力了>﹏<
因为大二上学期有过一门Java课,作为快速复习。在CSDN上找到了偏头痛杨的Java入门系列文章,写得非常好!

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

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

1.Java为什么能跨平台?

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

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

C++

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

Sun公司

4.Java的爸爸是谁?

詹姆斯-高斯林

5.Java的工作机制?

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

6.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程序)

7.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小游戏。

8.java与javac命令的作用?

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

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

9.Java环境如何配置?

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

10.Java的部分特点?

  • 跨平台
  • 重要的网络编程语言
  • 吸收了C++的优点,摒弃了多继承,指针的概念
  • 不仅仅是一门语言,还是一个庞大的技术体系(包括编程语言、虚拟机、- - 开发环境、应用程序环境、部署环境等)
目录
相关文章
|
14天前
|
Java
Java基础—笔记—static篇
`static`关键字用于声明静态变量和方法,在类加载时初始化,只有一份共享内存。静态变量可通过类名或对象访问,但推荐使用类名。静态方法无`this`,不能访问实例成员,常用于工具类。静态代码块在类加载时执行一次,用于初始化静态成员。
10 0
|
14天前
|
Java API 索引
Java基础—笔记—String篇
本文介绍了Java中的`String`类、包的管理和API文档的使用。包用于分类管理Java程序,同包下类无需导包,不同包需导入。使用API时,可按类名搜索、查看包、介绍、构造器和方法。方法命名能暗示其功能,注意参数和返回值。`String`创建有两种方式:双引号创建(常量池,共享)和构造器`new`(每次新建对象)。此外,列举了`String`的常用方法,如`length()`、`charAt()`、`equals()`、`substring()`等。
15 0
|
18天前
|
缓存 安全 Java
Java并发编程进阶:深入理解Java内存模型
【4月更文挑战第6天】Java内存模型(JMM)是多线程编程的关键,定义了线程间共享变量读写的规则,确保数据一致性和可见性。主要包括原子性、可见性和有序性三大特性。Happens-Before原则规定操作顺序,内存屏障和锁则保障这些原则的实施。理解JMM和相关机制对于编写线程安全、高性能的Java并发程序至关重要。
|
14天前
|
Java API
Java基础—笔记—内部类、枚举、泛型篇
本文介绍了Java编程中的内部类、枚举和泛型概念。匿名内部类用于简化类的创建,常作为方法参数,其原理是生成一个隐含的子类。枚举用于表示有限的固定数量的值,常用于系统配置或switch语句中。泛型则用来在编译时增强类型安全性,接收特定数据类型,包括泛型类、泛型接口和泛型方法。
9 0
|
27天前
|
SQL 前端开发 Java
Java后端进阶之路: JavaWeb(四)
Java后端进阶之路: JavaWeb
33 1
|
XML SQL Java
Java后端进阶之路: JavaWeb(三)
Java后端进阶之路: JavaWeb
30 1
|
1月前
|
Java 编译器
[java进阶]——泛型类、泛型方法、泛型接口、泛型的通配符
[java进阶]——泛型类、泛型方法、泛型接口、泛型的通配符
|
1月前
|
Java
【java进阶】Java中线程的实现方式
【java进阶】Java中线程的实现方式
|
1月前
|
Java 索引
【java进阶】集合的三种遍历(迭代器、增强for、Lambda)
【java进阶】集合的三种遍历(迭代器、增强for、Lambda)
【java进阶】集合的三种遍历(迭代器、增强for、Lambda)
|
1月前
|
Java
[java进阶]——stream流你还不会用吗?超详细使用介绍
[java进阶]——stream流你还不会用吗?超详细使用介绍