文章目录

  • 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语言特点

  1. 简单易学 —— Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。
  2. 面向对象 —— Java语言是一种以对象为中心,以消息为驱动的面向对象的编程语言。(**面向对象的语言都支持封装、继承、多态三个概念)
  3. 平台无关性 —— 指的是Java语言编写的应用程序不用修改就可以在不同的软硬件平台上运行,Java语言是靠Java虚拟机(JVM)实现平台无关性的。
  4. 分布式 —— Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
  5. 可靠性 —— Java解释器运行时实施检查,可以发现数组和字符串访问的越界;另外,Java提供了异常处理机制(try-catch-finally),可以把一组错误的代码放在一起,这样可以简化错误处理任务,便于恢复。
  6. 安全行 —— Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。如:安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查。
  7. 支持多线程 —— Java环境本身就是多线程的,若干系统线程运行,负责必要的无用单元回收、系统维护等系统级操作;另外,Java语言内置多线程机制,可以大大简化多线程应用程序的开发。
  8. 支持网络编程 —— Java语言通过它所提供的类库可以处理TCP\IP,用户可以通过URL地址在网络上很方便地访问其他对象。
  9. 编译与解释并存 —— Java语言的编译器不是把源文件(.java)编译成二进制码,而是将其编译成一种独立于机器平台的字节码文件(.class)。字节码文件可以被Java解释器执行,由解释器将字节码文件再编译成二进制码,再运行。
  10. 健壮性 —— Java语言是健壮的。Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。

Java程序运行过程

java tale java talent_JVM

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+核心类库

java tale java talent_Java_02

JVM内存模型

java tale java talent_JVM_03

  • 程序计数器:是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。
  • 虚拟机栈(就是平常我们所说的栈):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