文章目录
- Java语言概述
- Java语言特点
- Java程序运行过程
- Java两种核心机制
- Java开发环境
- JVM内存模型
- DOS命令
Java语言概述
- 是SUN(Stanford University Network,斯坦福大学网络公司) 1995年推出的一门高级编程语言。
- 是一种面向Internet的编程语言。Java一开始富有吸引力是因为Java程序可以在Web浏览器中运行。这些Java程序被称为Java小程序(applet)。applet使用现代的图形用户界面与Web用户进行交互。applet内嵌在HTML代码中。
- 随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。
Java语言特点
- 简单易学 —— Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。
- 面向对象 —— Java语言是一种以对象为中心,以消息为驱动的面向对象的编程语言。(**面向对象的语言都支持封装、继承、多态三个概念)
- 平台无关性 —— 指的是Java语言编写的应用程序不用修改就可以在不同的软硬件平台上运行,Java语言是靠Java虚拟机(JVM)实现平台无关性的。
- 分布式 —— Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
- 可靠性 —— Java解释器运行时实施检查,可以发现数组和字符串访问的越界;另外,Java提供了异常处理机制(try-catch-finally),可以把一组错误的代码放在一起,这样可以简化错误处理任务,便于恢复。
- 安全行 —— Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。如:安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查。
- 支持多线程 —— Java环境本身就是多线程的,若干系统线程运行,负责必要的无用单元回收、系统维护等系统级操作;另外,Java语言内置多线程机制,可以大大简化多线程应用程序的开发。
- 支持网络编程 —— Java语言通过它所提供的类库可以处理TCP\IP,用户可以通过URL地址在网络上很方便地访问其他对象。
- 编译与解释并存 —— Java语言的编译器不是把源文件(.java)编译成二进制码,而是将其编译成一种独立于机器平台的字节码文件(.class)。字节码文件可以被Java解释器执行,由解释器将字节码文件再编译成二进制码,再运行。
- 健壮性 —— Java语言是健壮的。Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。
Java程序运行过程
Java两种核心机制
1、Java虚拟机
- JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器。
- 对于不同的平台,有不同的虚拟机。
- 只有某平台提供了对应的java虚拟机,java程序才可在此平台运行。
2.垃圾收集机制
- 不再使用的内存空间应回收。
- Java 语言消除了程序员回收无用内存空间的责任:它提供一种系统级线程跟踪存储空间的分配情况。并在JVM空闲时,检查并释放那些可被释放的存储空间。
- 垃圾回收在Java程序运行过程中自动进行,程序员无法精确控制和干预。
Java开发环境
什么是JDK,JRE?
- JDK(Java开发工具包)是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。其中的开发工具:编译工具(javac.exe) 打包工具(jar.exe)等。
- JRE(Java运行环境)包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果只想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。
JDK(Java开发工具包)=JRE+开发工具
JRE(Java运行环境)=JVM+核心类库
JVM内存模型
- 程序计数器:是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。
- 虚拟机栈(就是平常我们所说的栈):JVM栈是线程私有的内存区域。它描述的是java方法执行的内存模型,每个方法执行的同时都会创建一个栈帧用于存储局部变量表、操作数栈、方法出口等信息。每个方法从调用直至完成的过程,都对应着一个栈帧从入栈到出栈的过程。每当一个方法执行完成时,该栈帧就会弹出栈帧的元素作为这个方法的返回值,并且清除这个栈帧。
- 本地方法栈:本地方法栈和虚拟机栈所发挥的作用是很相似的,它们之间的区别不过是虚拟机栈为虚拟机执行Java方法(字节码)服务,而本地方法栈则为虚拟机使用到的Native方法服务。
- :堆:它存储着几乎所有的实例对象,堆由垃圾收集器自动回收,堆区由各子线程共享使用;
- 方法区:方法区是被所有线程共享的内存区域,用来存储已被虚拟机加载的类信息、常量、静态变量编译后的代码等数据。
- 常量池:常量池大体可以分为:静态常量池,运行时常量池。静态常量池 存在于class文件中;运行时常量池是方法区的一部分,用于存放编译期间生成的各种字面常量和符号引用。
DOS命令
DOS常用命令(window键+R打开运行输入cmd)
- dir 列出当前目录下的文件以及文件夹
- md 创建目录
- rd 删除目录
- cd 进入指定目录
- cd…(两个.) 退回到上一级目录
- cd\ 退回到根目录
- del 删除文件
- exit 退出dos 命令行
在命令窗口上运行Java程序
- 编译 javac XXX.java
- 运行 java XXX