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)

大家都在看

  • JavaWeb 08_JSP+Dao+Bean+Servlet 实现登录注册(连接数据库,验证码登录,两周内免登陆等功能)

    一.数据库db_01 表usert 字段username,password 二. 目录 三. 配置信息 四. 代码 index.jsp "charset=UTF-8&qu…

    Java 2023年6月7日
    088
  • 线程池:ThreadPoolExecutor源码解读

    1 带着问题去阅读 1.1 线程池的线程复用原理 1.2 线程池如何管理线程 1.3 线程池配置的重要参数 1.4 shutdown()和shutdownNow()区别 1.5 线…

    Java 2023年6月7日
    086
  • 我的笔记本电脑瞬间扩大一个T的容量!

    前言 不知道有多少人在家里搭建中央存储设备的,也就是NAS。这个东西在我日常生活中,存储了大量的个人资料,家人们的照片,技术的资料,还有各种高清影视剧。搭配公网的IP,可以真正做到…

    Java 2023年6月8日
    0262
  • Java面试整理(精简版)

    特征(OOP) 解释说明 通俗理解 关系联系 作用 封装 隐藏内部细节,只对外暴露访问方法 属性/方法封装,便于使用,限制不合理操作 类-类 低耦合,高内聚,增强代码可维护性;**…

    Java 2023年6月5日
    061
  • MySQL基础入门(1)

    为什么学习MySQL 关系数据库管理系统(Relational Database Management System, RDBMS)是一种极为重要的工具,其应用十分广泛,从商业、科…

    Java 2023年6月5日
    073
  • ToneGenerator Init failed Crash 崩溃

    需求需要在扫码时产生一个短促的提示音, 搜了下像这样实现。测试时发现多次扫码后,会触发程序崩溃问题。 异常如下 代码如下: 一番搜索, 以下为最佳答案, 加上以后,循环测试, 不再…

    Java 2023年6月15日
    061
  • GBase 8t索引

    索引时数据库提高数据查询处理性能的一个非常关键的技术,索引的使用可以对性能产生上百倍甚至上千倍的影响。接下来,会介绍索引的基本原理、概念,并深入学习数据库中所使用的索引结构和存储方…

    Java 2023年6月9日
    083
  • 物联网微消息队列MQTT介绍-EMQX集群搭建以及与SpringBoot整合

    先看我们最后实现的一个效果 1.手机端向主题 topic111 发送消息,并接收。(手机测试工具名称:MQTT调试器) 2.控制台打印 MQTT基本简介 MQTT 是用于物联网 (…

    Java 2023年6月13日
    074
  • NGINX根据不同请求头参数,请求不同服务器

    在nginx的location配置中,在获取header配置时,须要在header名称前面加上固定前缀”http_”,并将header名称中的”…

    Java 2023年5月30日
    058
  • RabbitMQ

    一.MQ的相关概念 什么是MQ? Message Queue,消息队列。简单的来说,就是一个先进先出的队列,用来发送消息(信息)。 为什么要用 MQ? 流量消峰:在电商系统中,比如…

    Java 2023年6月7日
    080
  • VMware中虚拟机与主机不能ping通解决办法

    先去看看服务全部启动了没? VMware相关服务启动关闭脚本 启动了还报错,接着往下看。。。。。。 一、如果是 桥接模式,那么 可能性1:虚拟机防火墙禁ping,请关闭虚拟机防火墙…

    Java 2023年5月30日
    082
  • postgresql权限

    创建用户 GRANT 命令的基本语法如下: GRANT privilege [,…] ON object[,…] TO { PUBLIC | GROUP group| us…

    Java 2023年6月7日
    091
  • SpringBoot:同一个类中调用另一个方法没有触发 Spring AOP

    考虑如下一个例子: 在这个例子中, 我们定义了一个注解 MyMonitor, 这个是一个方法注解, 我们的期望是当有此注解的方法被调用时, 需要执行指定的切面逻辑, 即执行 MyA…

    Java 2023年5月30日
    0109
  • Markdown语法

    Markdown语法 1.标题 示例: 这是一级标题 ## 这是二级标题 ### 这是三级标题 #### 这是四级标题 ##### 这是五级标题 ###### 这是六级标题 渲染结…

    Java 2023年6月8日
    073
  • PowerJob高级特性-容器部署完整教程

    介绍 powerjob提供了容器功能,用来做一些灵活的任务处理。这里容器为 JVM 级容器,而不是操作系统级容器(Docker)。(至于为什么取”容器”这个…

    Java 2023年6月6日
    0101
  • Java7之后的intern

    最近在《深入理解Java虚拟机》一书中了解到,以下内容在Java7中第一个返回true,第二个返回false,产生了一些疑惑,经过一番搜索,对intern的理解有所加深,这里记一下…

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