💻
QMMMS的笔记
博客
  • QMMMS的笔记
  • agent
    • MCP的背景、原理和开发
    • Agent 历史与背景
    • Agentic Workflows
    • 环境检查与基础工具
    • Tool Call
    • 工具与运行时的值
    • temp
    • 处理 Tool Call error
    • trick
  • algorithm
    • 线性结构
    • 二叉树
    • 图
    • 查找
    • 排序
    • 动态规划
    • 优化方法
    • 数学
    • 迁移至Java
  • computer_composition
    • 系统总线
    • 存储器
    • 输入输出系统
    • 计算机的运算方法
    • 指令系统
    • 补充
  • computer_network
    • 引入
    • 应用层
    • 传输层
    • 网络层(数据平面)
    • 网络层(控制平面)
    • 链路层
    • 常见问答
    • 实验
  • database
    • SQL实战
    • 关系代数
    • 数据库设计
    • 规范化
    • 数据库基本概念
    • 查询原理
    • 数据库恢复技术
    • 并发控制
  • dev_tools
    • Git
    • Nginx
    • Spring
    • LangChain
    • PyTorch Cheat Sheet
    • MyBatis
    • MySQL Cheat Sheet
    • MySQL 补充
    • Redis
    • Docker
    • RocketMQ
    • Chrome
  • linux
    • Linux基础命令与使用
    • 文件与权限
    • 文件与目录操作
    • 权限属性高级
    • 命令与文件的查找
    • 文件压缩和打包
    • vim编辑器
    • shell变量
    • 命令补充
    • 数据流重定向
    • 管道命令
    • shell脚本
    • 用户管理
    • 用户间交流
    • 计划任务
    • 进程管理
    • 软件管理
    • 认识系统服务
    • 运维常用命令
    • 常用命令
  • llm
    • 大规模语言模型概述
    • 分布式训练概述
    • 有监督微调概述
    • 强化学习与LLM
    • LLM评估概述
    • 大模型应用
    • 理解大模型
    • 量化
    • 预训练
    • 上下文学习
  • machine_learning
    • 引入
    • 大致正确学习
    • 一致收敛
    • 偏差还是过拟合?
    • 可学习的充要条件
    • 非均匀可学习性
    • 计算复杂性
  • mathematics
    • 概率与统计基础
    • 线性代数基础
  • operating_system
    • 操作系统基本概念
    • 进程和线程
    • 同步,互斥与死锁
    • 内存管理
    • 文件系统
    • I/O系统
    • 保护与安全
    • 《现代操作系统》
  • statistical_learning
    • 统计学习引入
    • 线性回归
    • 分类
    • 重抽样方法
    • 线性模型选择与正则化
    • 非线性模型
    • 基于树的方法
    • 支持向量机
    • 无指导学习
    • 马尔科夫链和蒙托卡罗方法简明理解
    • R语言速查
  • deep_learning
    • basic_concepts
      • 逻辑回归与损失函数
      • 神经网络
      • 正则化、预处理、权重初始化
      • 优化算法
      • 机器学习策略
      • 复习:从计算机视觉的角度
      • 卷积神经网络
      • 深度卷积网络示例
      • 计算机视觉任务
      • 循环神经网络
      • 自然语言处理任务
      • 注意力
      • Transformers 家族
      • 显卡扫盲
      • 强化学习概述
    • semi-supervise
      • 半监督学习简介
      • Consistency Regularization
      • Proxy-label Methods
      • Holistic Methods
      • Generative Models
      • Graph-Based SSL
      • Self-Supervision for SSL
      • Other SSL methods
  • programming
    • cpp
      • STL
      • C++基础
      • 内存管理
      • 面向对象
    • java
      • 环境和介绍
      • 注释
      • String
      • 面向对象思想
      • Object
      • 包
      • 访问权限修饰符
      • 初始化块
      • 接口
      • 内部类
      • 注解
      • 枚举
      • 集合框架
      • List
      • Map
      • 泛型
      • 迭代
      • IO与流
      • 序列化
      • 异常
      • Lambda
      • Stream流
      • Socket
      • 缓冲
      • 命名规范
      • 拆箱装箱
      • 值传递
      • 深拷贝
      • 反射
      • JVM
      • 并发编程基础
    • python
      • 并发编程
      • 环境管理
  • software_engineering
    • basic_concepts
      • 系统分析与设计概述
      • 规划
      • 需求分析与原型设计
      • 项目管理
      • 建模
      • 数据库设计
      • 架构
      • 配置管理
      • 测试管理
      • 安全
      • 编码原则
      • 微服务
      • 补充内容
    • software_testing
      • CMMI基础
      • PPQA与SQA
      • 软件测试基础
      • 黑盒测试
      • 白盒测试
      • 集成测试
      • 系统测试
      • 测开面试补充
由 GitBook 提供支持
在本页
  • JDK
  • JRE
  • JVM
  • 三大版本
  • 编译流程
在GitHub上编辑
  1. programming
  2. java

环境和介绍

java从5开始就是Java5,java6,java7,java8这样命名,java5之前都是java1,java1.2,java1.3,java1.4这样命名,我们口中说的Java8、JDK8、JDK1.8都是一个东西。

JDK:java development kit (java开发工具)

JRE:java runtime environment (java运行时环境)

JVM:Java Virtual Machine (java虚拟机)

  • Java 技术 = Java 语言 + Java 平台

  • Java 平台 = JVM + JDK

  • Java SE = JDK 根基

  • Java EE,JavaSE,JavaFX 是 Java SE 的扩展

JDK

开发环境(核心)

Java development kit的缩写,意思是Java开发工具,里面包含运行时环境(JRE)和其他 Java 开发所需的工具,比如说解释器(java)、编译器(javac)、文档生成器(javadoc)等等。

jdk主要包含三个部分:

  1. Java运行时环境,JVM

  2. Java的基础类库,这个类库的数量还是相当可观的

  3. Java的开发工具,它们都是辅助你更好地使用Java的利器jre--运行环境

JRE

运行环境,如果只想运行 Java 程序而不需要开发 Java 程序的话,只需要安装 JRE 就可以了。

如果你本机上安装了JDK和JRE,可以发现:JDK的bin目录比JRE的bin目录多了一个javac (Java语言编译器),这一点很好理解,因为JRE只是一个运行环境而已,与开发无关,与编译无 关。

既然JRE是运行时环境,那么运行在哪?肯定是JVM虚拟机上了,在jre的bin目录里有个jvm.dll。另,jre的lib目录中放的是一些JAVA类库的class文件,已经打包成jar文件。

JVM

Java Virtual Machine (java虚拟机)的缩写。一次编译,随处运行的功臣。

Java的程序也就是我们编译的代码都会编译为class文件,class文件就是在jvm上运行的文件,只有JVM还不能完全支持class的执行,因为在解释class的时候JVM需要调用解释所需要的类库lib,而jre包含lib类库。

JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改的运行。

三大版本

简单点说 Java SE 是做电脑上运行的软件。 Java EE 是用来做网站的(我们常见的JSP技术) Java ME 是做手机软件的。

JSP的全称是Java Server Pages,即Java的服务器页面,JSP的主要作用是代替Servlet程序回传HTML页面的数据

  • Java SE 全称(Java Platform,Standard Edition)以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序,包含了支持 Java Web 服务开发的类,为(Java EE)提供基础。

  • Java EE 全称(Java Platform,Enterprise Edition)这个版本以前称为 J2EE。企业版帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web 2.0 应用程序。

  • Java ME 全称(Java Platform,Micro Edition)这个版本以前称为 J2ME。为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。

Java EE 是开发 WEB 应用的!例如网站,网页等,Java EE 包含Java SE,要想学好Java EE,除了Java SE 精通外,你还要学一些其他的框架以及知识,例如Spring、SpringMVC、MyBatis 等一些框架。Java 最厉害,用的最多的地方就是做 WEB 应用!当然 WEB 应用大体也可分为 前端开发 和 后端开发(服务器开发)两类!但是不管怎么样,Java SE 是基础,是必须要好好学的。

Java EE 相比于Java SE 来说,除了多出包(Package)以外,还多了若干 Java 容器,如 Tomcat、GlassFish、IBM WebSphere 等。

Java SE 是 Java EE 的基础所开发的东西也不一样,如果想找一份好的工作还是把 Java SE 学好学精可以找一个几千块的工作,如果把 Java EE 学精那么相信你的工资很快就会超过 20k。

补充:

JavaFX是用于构建富互联网应用程序的Java库。 使用此库编写的应用程序可以跨多个平台一致运行。

使用JavaFX开发的应用程序可以在各种设备上运行,如台式计算机,手机,电视,平板电脑等。 要使用Java编程语言开发GUI应用程序,程序员依赖于诸如高级窗口工具包(AWT)和Swings之类的库。

在JavaFX出现之后,这些Java程序开发就可以有效地利用丰富的类库来开发GUI应用程序。

编译流程

在编写好Welcome.java之后,编译与运行的命令(包名为空):

javac Welcome.java;  # 将源代码文件编译为 Welcome.class 字节码文件
java Welcome;  # 运行字节码

有包名的情况下:

package com.example;

public class Main{
    public static void main(String[] args){
        System.out.println("Hello World");
    }
}

这个java文件放在 /test/com/example 文件夹下,需要在该文件夹下编译后,回到/test文件夹,运行:

java com.example.Main
上一页java下一页注释

最后更新于10个月前