文章目录

  • Java语言运行机制
    • 核心机制—Java虚拟机
    • 核心机制—垃圾回收
  • JAVA特点、优点
  • 环境
    • JDK
    • JRE
    • JDK、JRE、JVM关系
    • 开发环境配置

Java语言运行机制

  • Java虚拟机 (Java Virtal Machine)
  • 垃圾收集机制 (Garbage Collection)

核心机制—Java虚拟机

JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器。

  • 对于不同的平台,有不同的虚拟机。
  • 只有某平台提供了对应的java虚拟机,java程序才可在此平台运行
  • Java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”

核心机制—垃圾回收

  • 不再使用的内存空间应回收—— 垃圾回收。

    • 在C/C++等语言中,由程序员负责回收无用内存。
    • Java 语言消除了程序员回收无用内存空间的责任:它提供一种系统级线程跟踪存储空间的分配情况。并在JVM空闲时,检查并释放那些可被释放的存储空间
  • 垃圾回收在Java程序运行过程中自动进行,程序员无法精确控制和干预。
  • Java程序还会出现内存泄漏和内存溢出问题吗?Yes!

JAVA特点、优点

1、跨平台/可移植性

这是Java的核心优势。Java程序的跨平台主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行,Java虚拟机中的Java解释 器负责将字节码文件解释成为特定的机器码进行运行。

2、安全性

  1. Java取消了强大但又危险的指针。由于指针可进行移动运算,指针可随便指向一个内存区域, 而不管这个区域是否可用,这样做是危险的,因为原来这个内存地址可能存储着重要数据 或者是其他程序运行所占用的, 并且使用指针也容易数组越界。
  2. Java提供了自动内存管理机制,由垃圾回收器在后台自动回收,Java在字节码的传输过程中使用了公开密钥加密机制(PKC)。
  3. 而在运行环境提供了四级安全性保障机制:字节码校验器 -类装载器 -运行时内存布局 -文件访问限制

3、面向对象

面向对象是一种程序设计技术,非常适合大型软件的设计和开发。由于C++为了照顾大量C语言使用者而兼容了C,使得自身仅仅成为了带类的C语言,多少影响了其面向对象的彻底性!

Java则是完全的面向对象语言。

  • 两个要素:类、对象
  • 三个特征:封装、继承、多态

4、简单性

Java就是C++语法的简化版,指的就是将C++的一些内容去掉;比如:头文件,指针运算,结构,联合,操作符重载,虚基类等等。同时,由于语法基于C语言,因此学习起来完全不费力。

5、高性能

Java最初发展阶段,总是被人诟病“性能低”;客观上,高级语言运行效率总是低于低级语言的,这个无法避免。Java语言本身发展中通过虚拟机的优化提升了几十倍运行效率。比如,通过JIT(JUST IN TIME)即时编译技术提高运行效率。 将一些“热点”字节码编译成本地机器码,并将结果缓存起来,在需要的时候重新调用。这样的话,使Java程序的执行效率大大提高,某些代码甚至接待C++的效率。

因此,Java低性能的短腿,已经被完全解决了。业界发展上,我们也看到很多C++应用转到Java开发,很多C++程序员转型为Java程序员。

6、分布式

Java是为Internet的分布式环境设计的,因为它能够处理TCP/IP协议。事实上,通过URL访问一个网络资源和访问本地文件是一样简单的。Java还支持远程方法调用(RMI,Remote Method Invocation),使程序能够通过网络调用方法。

7、多线程

多线程的使用可以带来更好的交互响应和实时行为。 Java多线程的简单性是Java成为主流服务器端开发语言的主要原因之一。

8、健壮性

  • 去除了c语言中的指针
  • 自动的垃圾回收机制 – > 但仍然会出现内存溢出、内存泄漏

环境

JDK

  • JDK(Java Development Kit Java开发工具包)

  • JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了 JRE。所以安装了JDK,就不用在单独安装JRE了。

    • 其中的开发工具:编译工具(javac.exe) 打包工具(jar.exe)等

JRE

  • JRE(Java Runtime Environment Java运行环境)
  • 包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等, 如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。

JDK、JRE、JVM关系

  • JDK = JRE + 开发工具集(例如Javac编译工具等)
  • JRE = JVM + Java SE标准类库

开发环境配置

要让cmd在任何路径下都可以运行开发工具

JAVA_HOME = bin的上一层目录

path = %JAVA_HOME%\bin

JAVA特点优点以及环境相关推荐

  1. Java开发和运行环境的搭建(详细教程)

    对JDK.JRE.Java 的认识 JDK 是Java Development Kit的缩写,即Java开发工具集.JDK是整个Java的核心,包括了Java运行环境(JRE).Java开发工具和Ja ...

  2. 基于Java技术的Web环境下分布式数据库互操作性的实现

                作者:李炽明 莫倩 徐明 1 JDBC工作原理 JDBC(Java Database Connectivity)是1个Sun公司注册了的商标,代表用来执行SQL语句的Java语 ...

  3. Java认识和开发环境搭建

    Java开发环境 文章目录 Java开发环境 一.认识Java 二.Java开发环境 1.Java编译过程 2.JVM.JRE.JDK之间的关系 3.安装JDK 4.配置环境变量 三.编译工具安装(I ...

  4. MyEclipse搭建java Web项目开发环境

    MyEclipse搭建java Web项目开发环境 首先,在开始搭建MyEclipse的开发环境之前,还有三步工具的安装需要完成,只要在安装配置成功之后才可以进入下面的java Web项目开发环境的搭 ...

  5. Java及Android开发环境搭建

    前言 自从接触java以来,配置环境变量折腾了好几次,也几次被搞得晕头转向,后来常常是上网查阅相关资料才解决.但是过一段时间后一些细节就会记不清了,当要在其他机子上配置时又得上网查或者查阅相关书籍,如 ...

  6. java applet配置_配置Java Applet的运行环境

    Java小程序,也就是Java Applet,可以在Web浏览器中运行.Java Applet必须以脚本的形式嵌入到HTML页面中,才能在web浏览器中运行. 之前总以为本地安装了JDK,指定好JAV ...

  7. java三个环境变量_java基础(一):我对java的三个环境变量的简单理解和配置

    首先说说java的三个环境变量:java_home,classpath,path java_home:jdk的安装路径[你一层一层点开安装路径,直到当前目录有一个bin目录,然后在地址栏里面右键单击复 ...

  8. java web开发myeclipse_【java项目实战】一步步教你使用MyEclipse搭建java Web项目开发环境(一)...

    首先,在开始搭建MyEclipse的开发环境之前,还有三步工具的安装需要完成,只要在安装配置成功之后才可以进入下面的java Web项目开发环境的搭建. 1.安装工具 第一步,下载并安装JDK,到官网 ...

  9. java ee开发环境_设置Java EE 6开发环境

    java ee开发环境 本教程简要说明了如何设置典型的环境来开发基于Java EE 6的应用程序. 除了可以正常工作的Windows XP客户端具有足够的CPU能力和内存外,本教程没有其他先决条件. ...

最新文章

  1. LeetCode 228: Summary Ranges
  2. 机器学习101:我们天天都在说的机器学习,究竟该怎么入门?
  3. 权重可以当做概率幅吗?---用神经网络的收敛模拟机械波的波动
  4. php网站制作商品结算怎么做,一种以让产品、信息快速同步多网站销售并结算的技术的制作方法...
  5. 【详细分析】1023 Have Fun with Numbers (20 分)_20行代码AC
  6. java调用python,传参json字符串,含中文传参
  7. java 并_java并发编程(一)
  8. Swift初探(一)
  9. Leetcode每日一题:1365.how-many-numbers-are-smaller-than-the-current-number(有多少小于当前数字的数字)
  10. 双系统重装Ubuntu经验分享
  11. sign-canvas 一个基于canvas开发,封装于Vue组件的通用手写签名板(电子签名板),支持pc端和移动端;
  12. Html中的表格、Table和div,表格页面、员工登记表、Div代码
  13. Excel 10个高级办公技巧
  14. ps怎么缩放图层大小_PS怎么快速修改图层大小|Adobe Photoshop CS6图层大小尺寸调整--系统之家...
  15. java for 死循环_一个Java For语句死循环的例子源码
  16. 酷狗外链播放器html5,WP博客制作并添加酷狗外链播放器
  17. 数独-比回溯法更优的人类思维逻辑的数独解法
  18. ❤️ 工厂模式:教你如何制造一台Huawei P50手机 ❤️
  19. 去除VScode中的蓝色波浪线
  20. 异型窗体制作(两种方法)

热门文章

  1. xhtml转xsl-fo
  2. SAP QM 检验点 (Inspection Point) 的使用
  3. tomcat 历史版本下载
  4. 方舟服务器物理机配置,方舟云服务器要什么配置
  5. python基于广度优先(BFS)的迪杰斯特拉(Dijkstra)算法 求最短路径
  6. UOJ 267 [清华集训2016]魔法小程序
  7. 重新回到Fcitx5的怀抱
  8. DeepRMethylSite:一种基于深度学习的蛋白质精氨酸甲基化位点预测方法
  9. 杭电2026——首字母变大写
  10. Chapter(MySQL)(基础知识)