1、Java开发步骤:
1)编写java源代码
2)编译成class文件
3)运行
第一步:程序员编写java程序
第二步:jdk将java程序编译成JVM能识别的class字节码文件(class文件是不是二进制文件呢?不是,是十六进制文件)
第三步:JVM将十六进制字节码文件编译成底层操作系统能够识别的二进制机器码
实际操作:
通过notepad写一个java文件
在文件所在位置输入cmd,打开命令窗口
将java源代码编译成java文件 输入命令:javac HelloWorld.java
生成.class字节码文件
.class文件是16进制的
运行字节码文件,输入命令:java HelloWorld
小知识点:
1、配置环境变量的目的是什么?
相当于配置个环境变量,能让操作系统识别指令。
jdk是安装在操作系统上的一个服务,就需要让操作系统能够识别这个服务:
1)在系统默认路径中找到服务的执行文件
2)通过配置的环境变量找到服务的可执行文件
其中1)的优先级大于2)
2、JDK与JRE的区别?
Java development kit:java开发工具包,包含JRE
Java runtime environment:java运行环境
2、JVM虚拟机概述(面试必考点)
2.1、跨平台
一套java代码可以运行在不同的操作系统,如Windows、Mac、Linux
2.2、JVM可以分为5个部分:
- 类加载器(Class Loader):加载字节码文件到内存
- 运行时数据区(Runtime Data Area):JVM核心内存空间的结构模型
- 又包括方法区、虚拟机栈、本地方法栈、堆、程序计数器
- 执行引擎(Execution Engine):对JVM指令进行解析,翻译成机器码,提交给操作系统
- 本地库接口(Native Interface):供Java调用的融合了不同开发语言的原生库
- 本地方法库(Native Libraries):Java本地方法的具体实现
2.2.1运行时数据区
方法区
存储加载的类信息、常量、静态变量,方法区是一种规范,永久代是方法区的一种实现,元空间也是方法区的一种实现,1.8之后使用元空间替代永久代。
永久代和元空间都是JVM内存中的一块区域
本地方法栈
执行本地方法,什么是本地方法?
Java是基于应用层的高级编程语言,无法访问底层操作系统,就需要使用其他语言来完成,比如C++。
本地方法的使用原理:
1、在java程序中声明native修饰的方法,只有方法定义,没有方法实现,将java程序编译成字节码文件。
2、用javah编译字节码文件,生成一个.h文件。
3、编写一个C++,.cpp文件,实现.h文件中的方法。
4、将.cpp文件编译成动态链接库文件.dll
5、使用System.loadLibrary()加载动态链接库文件.dll
常见的本地方法:
getClass() //获取运行时类
hashCode() //获取对象的哈希值
wait() //让正在访问当前资源的线程暂停