本文首发于公众号:javaadu

典型回答

这种问题比较笼统,如果我遇到这个问题,我会从下面几个点阐述我的观点:

  1. Java通过JVM实现了“一次编写,到处运行”的特性,由JVM屏蔽掉了不同平台的差异性,并创建了字节码语言来作为Java代码的“汇编语言”,JVM读取字节码文件、解析字节码文件来运行;
  2. JVM提供了垃圾收集器,大部分情况下,程序员不需要自己担心内存的分配和回收;
  3. Java在企业级开发领域具备杀手级框架Spring全家桶,让Java在企业服务领域几无敌手;
  4. Java在客户端开发领域具备杀手级应用场景——Android开发;
  5. Java开发的生态非常丰富和完整,有无数成熟可靠的开源软件;
  6. Java是一门面向对象的静态类型语言,面向对象的特性有助于Java构建大型的、复杂的应用,静态类型语言使得Java在运行时的速度远胜于解释性语言,同时使得Java应用在编译期可以发现很多问题,是类型安全的;
  7. Java一直在发展和进化,Java 1.5补充了很多有用的特性、Java 1.8开始引入stream、lambda等特性来拥抱函数式编程范式、Java 1.9开始支持模块化等等

问题分析

这种问题属于开放式问题,可以考察很多方面的内容,例如面试者的基础知识是否扎实、知识体系是否完整。越是开放的问题,回答越不能发散,要给出系统性、结构性的回答,表现出自己是系统、全面得掌握了Java语言和其所运行的平台的。

知识点扩展

1、Java知识地图

首先看一张图,是Oracle对Java核心概念的一些总结

这张图看着密密麻麻的,不太好懂,我整理了一份脑图出来,看着更清晰一点(利用虚线框表示包含关系):

  1. JVM虚拟机:按照虚拟化里面的概念,JVM虚拟机属于宿主型虚拟机,作为一个虚拟机,最核心的模块是:运行时内存管理、类加载、字节码系统、执行引擎、垃圾收集器等等;
  2. JRE(Java运行时环境):只有JVM,对于普通的Java开发者来说难度太高了,因此Hotspot的开发者还为普通开发者提供了对应的Java SE API和其他开发者需要的类库,这些API、类库和JVM共同构成了Java运行时环境。
  3. Java语言:JVM之上不仅仅有Java语言长盛不衰,还培育出了丰富的语言生态,例如Scala、Groovy、Kotlin、等新生代的语言。
  4. JDK:JVM、JRE,在加上辅助工具、Java语言,共同构成了JDK。
2、应用场景

从Java语言的应用场景和生态看,分为如下几点:

  1. 企业级开发(J2EE):SSM框架、Spring Boot、Spring Cloud、JPA、缓存、批量处理、定时任务等等;
  2. 客户端开发(J2ME):安卓开发
  3. 大数据开发:Spark、Hadoop、Hbase、ES等等
3、新特性

在将上面的内容讲完后,面试官对你的知识体系的完整性应该会比较满意,接下来还可以谈下Java各个版本的发展,最好能提到某个版本比较重大的新特性,向面试官证明你不仅掌握了基础,还随时跟进Java语言最新的发展。

  1. Java 1.8
  2. Java 1.9
  3. Java 1.11

参考资料

  1. Description of Java Conceptual Diagram

本号专注于后端技术、JVM问题排查和优化、Java面试题、个人成长和自我管理等主题,为读者提供一线开发者的工作和成长经验,期待你能在这里有所收获。

转载于:https://www.cnblogs.com/javaadu/p/10707587.html

001-为什么Java能这么流行相关推荐

  1. Spring Boot(号称Java当前最流行的开发框架) 中启动HTTPS

    Spring Boot(号称Java当前最流行的开发框架) 中启动HTTPS 说实话啊,这个框架是比较简单,但是数据库操作还是那么恶心,好比16岁的花姑娘配了一个80岁的老头,关于这一块,我会单独发布 ...

  2. 教妹学Java:Java 为什么如此流行?

    Java 为什么如此流行? 尽管 Java 已经 25 岁了,但仍然"宝刀未老".在 Stack Overflow 2019 年流行编程语言调查报告中,Java 位居第 5 位,有 ...

  3. 我是如何利用插件赚钱的(开发delphi6,VB 2008,Java ME等流行软件的第三方插件)

    我是如何利用插件赚钱的(2) Google搜索:软件工程师 金海龙 简介:若只把链接插入到自己的博客中去,无法提高浏览量:若能插入到大型网站的主页,就能每天100万次的浏览量,看看怎么做吧-- 郑重声 ...

  4. python编程和c语言编程的区别-C语言 python Java 等主要流行编程语言优劣对比

    如果一个IT小白准备进入IT开发行列,是该选Java呢还是另外的开发语言呢?开发一直是一个倍受争议的话题,那么其实这个问题并没有标准答案. 分享之前我还是要推荐下我自己的C/C++学习交流群:三四零六 ...

  5. python是目前计算机语言的主流吗_即便C++现在是增长最快的语言,为什么它不及Java、Python流行?...

    TIOBE已公布2020年9月的编程语言排行榜.C语言依然排行第一了,随后分别是Java.Python.C++.C#.有没有发现亮点?没错, 第一易主了,C 语言反超了 Java .同时与去年相比,C ...

  6. Java:Java有多流行,有哪些主要应用程序?

    Java是一种高级的.面向对象的编程语言,由于其类似英语的语法,读写相对简单. Java自1995年问世以来,一直定期占据世界上最流行的编程语言名单的首位,部分原因在于Java拥有简单的语法.不断的更 ...

  7. corn java 可配置_SpringBoot——目前Java开发最流行的框架(四)

    [SpringBoot] 十九.SpringBoot整合Junit4 1.添加启动器 2.编写测试类 在src/main/test里面新建com.bjsxt.MyTest 注意: 测试类不能叫做Tes ...

  8. c++强大还是python强大-如果C++很强大,为什么它不及Java、Python流行?

    C ++非常强大,因为它非常接近CPU.它使您的代码真正快速,但是您必须编写大量代码.用C ++进行多线程或异步编程是最糟糕的噩梦.这很难使用.但是,当今使用的几乎所有操作系统都是用C ++编写的.您 ...

  9. springboot 监听所有异常_SpringBoot——目前Java开发最流行的框架(一)

    [SpringBoot] 主要内容 Spring Boot简介 第一个基于Spring Boot的SpringMVC项目 Spring Boot配置文件 Spring Boot项目结构 Spring ...

最新文章

  1. c语言fd变量,有哪位大神会用FD程序包计算功能多样性呀,在线等......
  2. python中range 10 0_如何在python中使用range方法
  3. Java nio Socket非阻塞模式
  4. Vue子组件调用父组件的三种方式
  5. mysql recordcount 1_[转载]ADO记录集GetRecordCount()返回记录条数为啥总为-1
  6. java 电子杂志,java毕业设计_springboot框架的时尚电子杂志网站
  7. python 封装对象数据_Python数据库封装实现代码示例解析
  8. Android中activity的生命周期
  9. Spark 的 python 编程环境
  10. TED如何和压力做朋友(第三天)
  11. 触摸屏坏了有哪些现象_手机屏坏了有什么现象
  12. SLAM中位姿估计的图优化方法比较
  13. 全国计算机等级考试 二级C语言考前复习资料(笔试)
  14. Uncode系列开源后端开发组件
  15. Linux+v4l2自动设置相机曝光时间
  16. Elasticsearch 快速检索的秘诀
  17. JAVA一些方法技巧
  18. CAD导出PDF线条很粗怎样设置?
  19. 解决程序中出现小方块问题
  20. oracle 2018 拉里,Oracle拉里,有新武器对付SAP和HANA

热门文章

  1. matlab怎么相加相同id的几行,matlab几个有用的技巧
  2. simpana oracle,华为认证云运维专家(HCIE-CDO)
  3. authorization 传 就跨域_跨域访问接口上传图片出现options请求问题解决方法
  4. @cacheable 服务器 不一致_Dubbo一致性哈希负载均衡的源码和Bug,了解一下?
  5. usb转rj45_超薄本也能有线上网,只需一个USB转网口小工具
  6. MySQL48道经典基础面试题(包含各个方面)
  7. [leetcode]693. 交替位二进制数
  8. UnityShader9:光照基础回顾
  9. 二叉树性质 四种遍历方式
  10. bzoj 1064: [Noi2008]假面舞会(DFS)