官方网站:TIOBE
对JAVA之父的采访:Interview with James Gosling, Father of Java
从1995年在Sun World大会上的1.0版本正式提出“Write Once,Run Anywhere”到现在常年占据编程语言流行排行榜Top3,JAVA为什么能够如此受欢迎?下面我们就来盘点盘点!
1、面向对象编程
所谓面向对象指的是在进行程序开发时将应用程序的数据及操作方法封装成一个便于我们理解的"对象"的特性,使我们在开发过程能够更易理解、并实现信息的封装及模块化。
简单讲就是一个程序就可以被抽象成一个人,一个人会有两个眼睛、一个嘴巴等属性,可以有吃饭、行走等行为,程序也可以抽象成类似的属性和行为。
关于面向对象编程更详细的解释请看之前的一篇博文:面向接口编程
2、简单性
说一个东西简不简单其实是需要有东西对比才能够体现出来,了解或者学习过其他语言(如C++)的小伙伴就知道,JAVA中大体上语法和C++相类似,但是C++中一些比较难以理解、容易混淆的概念在JAVA中是没有的(如指针),JAVA是通过一种更清楚、更易理解的方式(即引用)来实现这些容易让人混淆的概念,所以对比起来就会感觉JAVA是更加简单的。
3、跨平台
跨平台指的是使用JAVA语言开发的程序能够运行在不同的软件平台和硬件平台上。 程序最终的执行是需要转成计算机硬件的机器指令来执行,而不同操作系统的、不同的计算机硬件是存在差异的,因此专门为某一种计算机硬件或者软件开发的程序直接放在另一个计算机硬件上是无法执行的(就像让大人穿小孩子的衣服,撑爆了也穿不进去),至少需要做移植操作,比如有些在Windows系统上编译的应用程序是无法直接拿到Unix系统上运行的。
想要解决这个问题,则需要程序语言不依赖于特定的操作系统或硬件,JAVA语言则正好满足这个条件,JAVA中引入了虚拟机概念,JVM实现了不同平台的JAVA接口,屏蔽了底层硬件的差异性,JAVA编译器将JAVA语言开发的程序编程成与计算机结构无关的字节码(也就是我们常说的class文件),只要安装了JAVA虚拟机,JAVA应用程序就可以在相应的环境下被执行。
4、健壮性
何为健壮性:通俗理解含义是软件(程序)对于规范要求以外的输入能够判断出这个输入不符合规范要求,并能有合理的处理方式。 比如:一个字段取值只允许为数组和字母,但是用户却输入了中文,此时,对于规范以外(非数组和字母)的输入,程序需要能够作出合理的响应(如提示用户输入不符合规范),而不是直接报错或者无响应。
再举个通俗的例子:你到银行提款机取钱,但是输入密码后提款机就卡死了,该怎么办?这时候你可以请求柜员帮助,柜员可以理解为银行为异常情况提供了一个兜底方案,这时候你肯定会给银行好评,因为如果没有柜员,提款机卡死后你除了等待就无法做其他事情,想要拿回银行卡就可能需要等到银行派专门人来才行,这时候用户体验就会非常差,程序亦是如此。
使用JAVA语言编写的程序则具有这方面的特性。首先JAVA语言程序会在编译和运行时对可能出现的问题进行检查,减少因未知原因导致程序崩溃的情况。同时,JAVA语言提供了异常处理机制,它能够在编译时提示未被处理异常或者为运行抛出异常提供兜底方案,防止程序崩溃。
5、安全性
JAVA可以说是一种安全的网络语言,它屏蔽了指针类型,对内存的操作通过对象实例实现,同时,JAVA还在编译、解释层面进行了安全性的保证。
如:在编译层,JAVA会进行各种语法检测,不满足语法的写法在编译时报错无法被解释执行,在解释层,会对JAVA程序编译出来的字节码校验,同时还会进行代码段格式、类型转换是否合法等方面的检查,从而保障程序执行的一个安全性。
6、支持多线程
随着科技的发展,人们对软件的使用体验有了更高的要求,响应速度就是其中非常重要的指标。JAVA内置了多线程的支持,通过多线程,计算机可以同时处理多个任务,因为处理器处速度远快于人接受信息的速度,人们会感觉软件的响应非常快,用户体验非常好。
7、可移植性
JAVA的可移植性主要与它的跨平台(平台无关性)有关,JAVA中的类库也实现了与平台无关的接口,从而具有了可移植性。JAVA的编译器也是使用JAVA语言编写的(源码可查看:JAVA编译器实现),解释器则是由标准的C实现,所以整个JAVA系统都具有可移植性。
8、动态性
JAVA中基础的单元就是类,类可以是开发者自定义,也可以是引用第三方定义好的类库,在JAVA中,类是运行时动态进行状态的,因此对类库添加新的属性和方法无序重新编译程序,这样JAVA就实现了动态维护程序和引用的类库。
而C/C++则是在编译时将相应的函数库或类库中使用到的类、函数生成机器码,如果后续类库升级如添加了新的函数,则C/C++程序想要使用类库中新增的功能,需要对程序进行重新修改、编译。
9、社区活跃度高、文档齐全
这个特点是得益于前面的描述的8个特点,正是因为JAVA语言有简单、跨平台等特性,才会吸引大量的开发者,社区的活跃度才会高,层层嵌套,所以JAVA才会流行至今。
除了上面举例的一些特点,你认为有哪些原因让JAVA从推出到至今还是如此流行呢?你觉的JAVA自身又存在哪些缺陷呢?欢迎您留言讨论。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://i-blog.csdnimg.cn/blog_migrate/7be82af07a2ab943fa908623c0b5c7dd.jpeg)
总结
这个月马上就又要过去了,还在找工作的小伙伴要做好准备了,小编整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
-S6kUHdtB-1713474540039)]
[外链图片转存中…(img-SN5qkvBA-1713474540039)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!