Java核心机制:JVM
Java的优缺点
Java从C语言和C++语言继承了许多
优点
-
跨平台性 :Java的核心优势,Java在设计初期就十分重视移植和跨平台性
-
通过Java语言编写的应用程序在不同系统平台上可运行
-
原理:只需在需要运行的Java应用程序所在的操作系统上安装一个Java虚拟机即可,由JVM负责在Java程序在该系统中的运行,不同平台,不同指令集
-
-
面向对象性
面向对象是一种程序设计技术,适合大型软件的设计和开发。 面向对象编程支持封装、继承、多台等特性,让程序更好达到高聚集、低耦合 的标准
-
健壮性:
吸收了C/C++语言的优点,去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等),提供了相对安全的内存管理和访问机制
-
安全性高:
Java适用于网络/分布式环境,需要提供一个安全机制以防止恶意代码的攻击,可以分配不同命名空间以防替代本地同名类、字节代码检查
-
简单性: Java是C++的简化版
-
高能性:
-
Java最初发展阶段,被人诟病 性能低 ;客观上,高级编程语言效率总是低于低级语言的,这无法避免。Java语言本身发展中通过虚拟机的优化提升了其效率
-
Java性能低的短板以被完全补齐
-
缺点
-
语法复杂、严谨 ,相较于Python、PHP灯光语言,入门较难
-
一般适用于大型网站开发,整体架构较重 ,对于初创公司开发和维护成本较高,一般选择使用Java语言开发的网站或应用系统需一定的经济实力
-
非适用于所有领域 。如Objective C、Swift在IOS设备上有着为可替代的地位;浏览器几乎由JavaScript掌控;Windows程序通常使用C++或C#编写;Java在服务器端编程和跨平台客户端应用领域则更具优势
JVM功能说明
JVM(Java虚拟机) :是一个虚拟计算机,是Java程序的运行环境。JVM具有指令集并使用不同的存储区域,负责执行指令,管理数据、内存、寄存器
功能1:实现Java程序的跨平台性
程序员编写的Java代码都是运行在JVM上
功能2:自动内存管理(内存分配、内存回收)
-
Java程序在运行过程中涉及到运算的 数据分配、存储 等均由JVM完成
-
Java消除了程序员回收无用内存空间的职责。提供了一种系统级线程跟踪存储空间的分配情况,在内存空间达到相应阈值时,检查并释放可被释放的存储器空间
-
GC的自动回收,提高了内存空间的利用率,提高了编程人员的效率,很大程度上减少了 因为没有释放空间而导致的 内存泄漏
内存溢出与内存泄漏
内存溢出是提供的内存不够;内存泄漏是无法再提供内存资源。
内存溢出
指程序要求的内存,超出了系统所能分配的范围,从而发生溢出
内存泄漏:
指分配出去的内存无法回收