从古看今,为何JAVA能够如此流行?

image-20211130220917862

JAVA能够长盛不衰的原因


对JAVA之父的采访:Interview with James Gosling, Father of Java

从1995年在Sun World大会上的1.0版本正式提出“Write Once,Run Anywhere”到现在常年占据编程语言流行排行榜Top3,JAVA为什么能够如此受欢迎?下面我们就来盘点盘点!

1、面向对象编程

所谓面向对象指的是在进行程序开发时将应用程序的数据及操作方法封装成一个便于我们理解的"对象"的特性,使我们在开发过程能够更易理解、并实现信息的封装及模块化。

简单讲就是一个程序就可以被抽象成一个人,一个人会有两个眼睛、一个嘴巴等属性,可以有吃饭、行走等行为,程序也可以抽象成类似的属性和行为。

image-20211130232258112

关于面向对象编程更详细的解释请看之前的一篇博文:面向接口编程

2、简单性

说一个东西简不简单其实是需要有东西对比才能够体现出来,了解或者学习过其他语言(如C++)的小伙伴就知道,JAVA中大体上语法和C++相类似,但是C++中一些比较难以理解、容易混淆的概念在JAVA中是没有的(如指针),JAVA是通过一种更清楚、更易理解的方式(即引用)来实现这些容易让人混淆的概念,所以对比起来就会感觉JAVA是更加简单的。

image-20211130233811412

3、跨平台

跨平台指的是使用JAVA语言开发的程序能够运行在不同的软件平台和硬件平台上。 程序最终的执行是需要转成计算机硬件的机器指令来执行,而不同操作系统的、不同的计算机硬件是存在差异的,因此专门为某一种计算机硬件或者软件开发的程序直接放在另一个计算机硬件上是无法执行的(就像让大人穿小孩子的衣服,撑爆了也穿不进去),至少需要做移植操作,比如有些在Windows系统上编译的应用程序是无法直接拿到Unix系统上运行的。

想要解决这个问题,则需要程序语言不依赖于特定的操作系统或硬件,JAVA语言则正好满足这个条件,JAVA中引入了虚拟机概念,JVM实现了不同平台的JAVA接口,屏蔽了底层硬件的差异性,JAVA编译器将JAVA语言开发的程序编程成与计算机结构无关的字节码(也就是我们常说的class文件),只要安装了JAVA虚拟机,JAVA应用程序就可以在相应的环境下被执行。

image-20211130233424796

4、健壮性

何为健壮性:通俗理解含义是软件(程序)对于规范要求以外的输入能够判断出这个输入不符合规范要求,并能有合理的处理方式。 比如:一个字段取值只允许为数组和字母,但是用户却输入了中文,此时,对于规范以外(非数组和字母)的输入,程序需要能够作出合理的响应(如提示用户输入不符合规范),而不是直接报错或者无响应。

再举个通俗的例子:你到银行提款机取钱,但是输入密码后提款机就卡死了,该怎么办?这时候你可以请求柜员帮助,柜员可以理解为银行为异常情况提供了一个兜底方案,这时候你肯定会给银行好评,因为如果没有柜员,提款机卡死后你除了等待就无法做其他事情,想要拿回银行卡就可能需要等到银行派专门人来才行,这时候用户体验就会非常差,程序亦是如此。

使用JAVA语言编写的程序则具有这方面的特性。首先JAVA语言程序会在编译和运行时对可能出现的问题进行检查,减少因未知原因导致程序崩溃的情况。同时,JAVA语言提供了异常处理机制,它能够在编译时提示未被处理异常或者为运行抛出异常提供兜底方案,防止程序崩溃。

image-20211201214136326

5、安全性

JAVA可以说是一种安全的网络语言,它屏蔽了指针类型,对内存的操作通过对象实例实现,同时,JAVA还在编译、解释层面进行了安全性的保证。

如:在编译层,JAVA会进行各种语法检测,不满足语法的写法在编译时报错无法被解释执行,在解释层,会对JAVA程序编译出来的字节码校验,同时还会进行代码段格式、类型转换是否合法等方面的检查,从而保障程序执行的一个安全性。

image-20211201220414352

6、支持多线程

随着科技的发展,人们对软件的使用体验有了更高的要求,响应速度就是其中非常重要的指标。JAVA内置了多线程的支持,通过多线程,计算机可以同时处理多个任务,因为处理器处速度远快于人接受信息的速度,人们会感觉软件的响应非常快,用户体验非常好。

image-20211201221700156

7、可移植性

JAVA的可移植性主要与它的跨平台(平台无关性)有关,JAVA中的类库也实现了与平台无关的接口,从而具有了可移植性。JAVA的编译器也是使用JAVA语言编写的(源码可查看:JAVA编译器实现),解释器则是由标准的C实现,所以整个JAVA系统都具有可移植性。

image-20211201222423285

8、动态性

JAVA中基础的单元就是类,类可以是开发者自定义,也可以是引用第三方定义好的类库,在JAVA中,类是运行时动态进行状态的,因此对类库添加新的属性和方法无序重新编译程序,这样JAVA就实现了动态维护程序和引用的类库。

而C/C++则是在编译时将相应的函数库或类库中使用到的类、函数生成机器码,如果后续类库升级如添加了新的函数,则C/C++程序想要使用类库中新增的功能,需要对程序进行重新修改、编译。

9、社区活跃度高、文档齐全

这个特点是得益于前面的描述的8个特点,正是因为JAVA语言有简单、跨平台等特性,才会吸引大量的开发者,社区的活跃度才会高,层层嵌套,所以JAVA才会流行至今。

Java高频面试专题合集解析:

阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等

当然在这还有更多整理总结的Java进阶学习笔记和面试题未展示,其中囊括了Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构资料和完整的Java架构学习进阶导图!

阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等

更多Java架构进阶资料展示

阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等

阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等

阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等

0571)]

更多Java架构进阶资料展示

[外链图片转存中…(img-WyZ2uX7y-1714567150571)]

[外链图片转存中…(img-x6PxdtnJ-1714567150572)]

[外链图片转存中…(img-0elJLXn4-1714567150572)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 12
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值