Java入门

Java特性和优势

  • 简单性
  • 面向对象
  • 可移植性(最重要的优势)write once, run anywhere
  • 高性能
  • 分布式
  • 动态性
  • 多线程
  • 安全性
  • 健壮性

Java三大版本

  • JavaSE: 标准版(桌面程序,控制台开发……)(基础)
  • JavaME: 嵌入式开发(手机,小家电……)
  • JavaEE: E企业级开发(web端,服务器开发……)(进阶)

JDK JRE JVM

  • JDK: Java Development Kit
  • JRE: Java Runtime Environment
  • JVM: Java Virtual Machine

卸载JDK

  1. 控制面板>>程序卸载>>卸载JDK
  2. 删除JDK的安装目录
  3. 删除JAVA_HOME
  4. 删除path下关于Java的目录
  5. 检查JDK是否删除(java -version)

安装JDK

JDK8或者JDK1.8是由于自从JDK1.5/JDK5命名方式改变后遗留的新旧命令方式问题。所以JDK8或者JDK1.8也是同一个东西

  1. 搜索JDK,找到下载地址
  2. 下载电脑对应版本
  3. 双击安装JDK
  4. 记住安装路径
  5. 配置环境变量(配置环境变量的目的是为了使java.exe 和 javac.exe 等可执行文件在任意路径下都可以执行,而不只是只能在JDK的安装目录下执行)
  6. 开始右键>>系统>>高级系统设置>>环境变量
  7. 新建JAVA_HOME(Java安装路径)
  8. 配置path变量(%JAVA%\bin %JAVA%\jre\bin) 在Java8之后在安装jdk时便不再提供jre的安装,而是让我们根据自己的需要自行的安装
    • 以管理员身份打开Java的安装目录
    • 输入命令:bin\jlink.exe –module-path jmods –add-modules java.desktop –output jre(实际上这是在运行bin目录中的jlink.exe程序,我们进入bin目录再运行:jlink.exe –module-path jmods –add-modules java.desktop –output jre 指令,效果也是一样的)
    • 回车后指令执行,我们就会在安装目录下得到一个jre文件夹了

安装jdk时为什么会有两个jre文件

安装jdk时安装目录中会有两个jre文件,其中一个在jdk内部,另一个在jdk外部,这就是所谓的专用JRE和公用JRE

专用JRE

  1. 安装jdk时,会安装一个专用JRE,并且可以选择安装一个公共副本(即公共JRE)。
  2. 运行jdk中包含的工具需要专用JRE。
  3. 专用JRE没有注册表设置,并且完全包含在仅对jdk已知的Java目录位置中。

公共JRE

  1. 公共JRE可由其他Java应用程序使用,并且包含在jdk外部。
  2. 公共JRE会注册到Windows注册表中。
  3. 公共JRE可以使用”添加/删除程序”进行删除,并且还会注册到浏览器。

运行Java程序时,只需要合适的JRE就能够运行,而并不需要使用JDK中的开发工具(如javac、java等等)。公共JRE就是为运行加载到计算机中的Java程序来提供运行环境的。也就是说,如果并不需要开发Java程序时,而仅仅是运行他人的已有的Java程序的时候,仅仅安装这个在JDK外部的JRE文件就足够了。

但是如果需要开发Java程序,那么就必须安装jdk,jdk中包含专用JRE和开发工具,这些开发工具需要专用JRE才能够使用,也就是说专用JRE是为开发Java程序准备的。

同时要注意,这两个JRE文件中的内容是有区别的,所以不能够简单的进行替换。

注意平时所说的”Java自动更新”根本不是所安装的JDK版本的更新,它指的是这个公用JRE运行时环境的更新,这个更新为的是让你的计算机能够使用最新版本正常的运行一些网站或者Web应用等等当中的Java程序,如果不及时更新的话,可能在浏览一些网站或者Web应用时,不能够正常的交互和显示,这与JDK没有任何关系。所以如果想要升级JDK版本,只能够从官网中下载最新版本JDK,重新安装。

编译型和解释型

计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机械语言,所以使用任何高级语言编写的程序若想被计算机运行,都必须将其转换成计算机语言,也就是机械码。

编译型语言(compile)

使用专门的编译器,针对特定的平台,将高级语言源代码一次性的编译成可被该平台硬件执行的机械码,并包装成该平台所能识别的可执行性程序的格式。

特点

在编译型语言写的程序执行之前,需要一个专门的编译过程,把源代码编译成机械语言的文件,如exe格式的文件,以后要再运行时,直接使用编译结果即可,如直接运行exe文件。因为只需编译一次,以后运行时不需要编译,所以编译型语言执行效率高。

总结

  1. 一次性编译成平台相关的机械语言文件,运行时脱离开发环境,运行效率高。
  2. 与特定平台相关,一般无法移植到其他平台。
  3. 现有的C、C++、Objective等都属于编译型语言。

Java入门

解释型语言

使用专门的解释器对源代码逐步解释成特定平台的机械码并立即执行。

特点

解释型语言不需要事先编译,其直接将源代码解释成机械码并立即执行,所以只要某一平台提供了相应的解释器即可运行该程序。

总结

  1. 解释型语言每次运行都需要将源代码解释成机器码并执行,效率较低。
  2. 只要平台提供相应的解释器,就可以运行源代码,所以可以方便源程序移植。
  3. Python等属于解释型语言。

Java入门

Java程序运行机制

Java入门

Original: https://www.cnblogs.com/ylfmax-blog/p/14292587.html
Author: 不不不巧
Title: Java入门

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/573608/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Java—-零钱通项目

    Java—-零钱通项目 项目要求:使用 Java 开发 零钱通项目 , 可以完成收益入账,消费,查看明细,退出系统等功能。 1. 面向过程 1)首先是这样一个菜单界面 …

    Java 2023年6月8日
    091
  • Spring ClassPathResource

    Spring ClassPathResource ClassPathResource用于加载资源文件,如果类路径资源文件位于文件系统中,支持解析为File,但是不用于JAR中的资源…

    Java 2023年6月7日
    097
  • java Script

    JavaScript JavaScript(简称”JS”)是一种具有函数优先的轻量级,解释型或即时编译型的高级编程语言,弱类型,脚本语言 三大部分 核心(E…

    Java 2023年6月6日
    0100
  • Java 8中Collectors.toMap空指针异常源码分析

    当需要将一个List转换为Map时,可以使用 Java 8 中的 Collectors.toMap() 方法,Map是由key-value组成的键值对集合,在使用 Collecto…

    Java 2023年6月8日
    0106
  • 2022-8-17 mysql 第三天

    子查询 按照结果集的行列数不同,子查询可以分为以下几类: 标量子查询:结果集只有一行一列(单行子查询) 列子查询:结果集有一列多行 行子查询:结果集有一行多列 表子查询:结果集多行…

    Java 2023年6月13日
    093
  • Java基础–线程池

    1. 为什么要使用线程池? 我们知道,操作系统创建线程、切换线程状态、终结线程都要进行CPU调度–这是一个耗费时间和系统资源的事情。服务端应用程序例如web应用中,比较…

    Java 2023年6月5日
    0127
  • Spring官网下载dist.zip的几种方法

    Spring官网改版后,很多项目的完整zip包下载链接已经隐掉了,虽然Spring旨在引导大家用更”高大上”的maven方式来管理所依赖的jar包,但是完全…

    Java 2023年5月30日
    094
  • JavaSE_关键字 接口 代码块 枚举

    1 Java中的关键字 1.1 static关键字 static特点 : 静态成员被所在类的所有对象共享 随着类的加载而加载 , 优先于对象存在 可以通过对象调用 , 也可以通过类…

    Java 2023年6月9日
    097
  • vue-router各个属性的作用及用法

    原文:https://www.cnblogs.com/goloving/p/9211358.html vue-router是vue单页面开发的路由,就是决定页面跳转的! Props…

    Java 2023年6月13日
    089
  • Java 求解自幂数(水仙花数)

    什么是自幂数 如果在一个固定的进制中,一个 n 位自然数等于自身各个数位上数字的 n 次幂之和,则称此数为自幂数。 例如:在十进制中,153 是一个三位数,各个数位的3次幂之和为 …

    Java 2023年6月15日
    0118
  • CSharp: QuestPDF create pdf file in donet core 6

    csharp;gutter:true; /// /// geovindu, Geovin Du,涂聚文 Edit /// public class DuModel {</p&…

    Java 2023年6月16日
    0100
  • JDBC连接数据库

    java连接mysql数据库实例: public static void main(String[] args) { Connection con=null; Statement …

    Java 2023年6月13日
    091
  • java中的定时任务

    java中的定时任务, 使用java实现有3种方式: 1, 使用普通thread实现 2, 使用timer实现: 可控制启动或取消任务, 可指定第一次执行的延迟 线程安全, 但只会…

    Java 2023年5月29日
    095
  • 04、SpringBoot 启动 准备运行环境(prepareEnvironment)流程(一)

    目录:Springboot源码学习目录上文:03、SpringBoot 启动 执行SpringApplication的run方法 准备运行环境前 流程前言: 一、准备运行环境方法(…

    Java 2023年6月13日
    0135
  • CSS基础

    Css 作用:用来修饰HTML页面,设置元素的样式,让html页面更加美观 一、引入css的三种方式 1、内联定义:在对象的标记内使用 &#x8BED;&#x6CD…

    Java 2023年6月13日
    081
  • 学校用ipad 4通过vpn上外网方法

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月7日
    0121
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球