Java基础核心概念与面试题解析:从环境配置到语言特性

宋时安
宋时安
发布时间:2026-10-13| 5人浏览过
原创

本文系统梳理Java基础核心概念,深入解析JDK、JRE与JVM的层级关系及跨平台实现原理。详细对比Oracle JDK与OpenJDK在版本周期、性能及许可协议上的差异,并阐明字节码机制如何平衡执行效率与可移植性,涵盖Java语言的主要特点及应用程序与小程序的主类区别,为Java初学者及面试复习提供清晰的技术脉络。

Java概述

何为编程

编程是指利用特定的程序设计语言编写代码,以指导计算机解决特定问题并获取预期结果的过程。

为了让计算机理解人类意图,必须将解决问题的思路、方法及手段转化为计算机可识别的形式,使其能按指令逐步执行任务。这种人与计算机之间的交互过程即定义为编程。

什么是Java

Java是一种面向对象的编程语言,它吸收了C++的优点,同时摒弃了C++中复杂的多继承和指针等概念,从而兼具功能强大与简单易用的特点。作为静态面向对象编程的代表,Java完美实现了面向对象理论,支持程序员以优雅的方式处理复杂编程任务。

jdk1.5之后的三大版本

Java SE(J2SE,Java 2 Platform Standard Edition,标准版)

Java SE旧称J2SE,支持在桌面、服务器、嵌入式及实时环境中开发和部署Java应用程序。

它包含支持Java Web服务开发的类,并为Java EE和Java ME提供基础支撑。

Java EE(J2EE,Java 2 Platform Enterprise Edition,企业版)

Java EE旧称J2EE,旨在帮助开发和部署可移植、健壮、可扩展且安全的服务器端Java应用程序。

Java EE构建于Java SE之上,提供Web服务、组件模型、管理及通信API,用于实现企业级面向服务体系结构(SOA)和Web2.0应用程序。2018年2月,Eclipse宣布将JavaEE正式更名为JakartaEE。

Java ME(J2ME,Java 2 Platform Micro Edition,微型版)

Java ME旧称J2ME,为移动设备和嵌入式设备(如手机、PDA、机顶盒和打印机)提供健壮灵活的应用运行环境。Java ME包含灵活的用户界面、健全的安全模型、多种内置网络协议以及对联网和离线应用的丰富支持。基于Java ME规范的应用程序只需编写一次,即可适配多种设备并利用本机功能。

JVM、JRE和JDK的关系

JVM

Java虚拟机(JVM)是Java程序运行的环境。由于不同平台拥有各自的虚拟机实现,Java语言得以实现跨平台运行。

JRE

Java运行环境(JRE)包含Java虚拟机及运行Java程序所需的核心类库。核心类库主要指java.lang包,内含基本数据类型、数学函数、字符串处理、线程及异常处理等系统必需类,默认加载该包。

若仅需运行已开发好的Java程序,计算机中安装JRE即可满足需求。

JDK

Java开发工具包(JDK)供Java开发人员使用,内含Java开发工具及JRE。因此安装JDK后无需单独安装JRE。其开发工具包括编译工具(javac.exe)、打包工具(jar.exe)等。

JVM&JRE&JDK关系图

什么是跨平台性?原理是什么

跨平台性指Java程序经一次编译后,可在多个系统平台上运行。

其实现原理在于Java程序通过Java虚拟机在系统平台上运行,只要目标系统安装了对应的Java虚拟机,即可运行Java程序。

Java语言有哪些特点

简单易学:Java语法与C语言和C++语言非常接近。

面向对象:支持封装、继承和多态三大特性。

平台无关性:通过Java虚拟机实现平台无关性。

支持网络编程:Java设计初衷即简化网络编程,因此支持网络编程且使用便捷。

支持多线程:多线程机制允许应用程序在同一时间并行执行多项任务。

健壮性:依靠强类型机制、异常处理及自动垃圾收集等特性保障程序健壮性。

安全性:Java语言具备较高的安全机制。

什么是字节码?采用字节码的最大好处是什么

字节码:Java源代码经虚拟机编译器编译后生成的文件(扩展名为.class),它不面向特定处理器,仅面向虚拟机。

采用字节码的好处:

Java通过字节码方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时保留了解释型语言的可移植性。因此Java程序运行高效,且由于字节码不针对特定机器,Java程序无需重新编译即可在不同计算机上运行。

先看下java中的编译器和解释器:

Java引入虚拟机概念,在机器和编译程序间增加一层抽象的虚拟机器。该虚拟机器在任何平台上为编译程序提供统一接口。编译程序只需面向虚拟机生成其可理解的代码,再由解释器将虚拟机代码转换为特定系统的机器码执行。在Java中,供虚拟机理解的代码称为字节码(即.class文件),它不面向特定处理器,仅面向虚拟机。各平台解释器虽不同,但实现的虚拟机相同。Java源程序经编译器编译为字节码后,由虚拟机解释执行,虚拟机将每条字节码送给解释器,解释器将其翻译为特定机器上的机器码并在该机器上运行,这体现了Java编译与解释并存的特点。

Java源代码---->编译器---->jvm可执行的Java字节码(即虚拟指令)---->jvm---->jvm中解释器----->机器可执行的二进制机器码---->程序运行。

什么是Java程序的主类?应用程序和小程序的主类有何不同?

一个程序可包含多个类,但仅有一个主类。在Java应用程序中,主类指包含main()方法的类;而在Java小程序中,主类是继承自系统类JApplet或Applet的子类。应用程序的主类不一定是public类,但小程序的主类必须是public类。主类是Java程序执行的入口点。

Java应用程序与小程序之间有那些差别?

简言之,应用程序从主线程启动(即main()方法);Applet小程序无main方法,主要嵌入浏览器页面运行(通过调用init()线程或run()启动),其嵌入浏览器的特性类似于Flash小游戏。

Java和C++的区别

两者均为面向对象语言,支持封装、继承和多态。

Java不提供指针直接访问内存,使程序内存更加安全。

Java类仅支持单继承,而C++支持多重继承。

虽然Java类不可多继承,但接口支持多继承。

Java具备自动内存管理机制,无需程序员手动释放无用内存。

Oracle JDK 和 OpenJDK 的对比

Oracle JDK版本每三年发布一次,而OpenJDK版本每三个月发布一次。

OpenJDK是一个完全开源的参考模型,而Oracle JDK是OpenJDK的一个实现,并非完全开源。

Oracle JDK比OpenJDK更稳定。两者代码几乎相同,但Oracle JDK包含更多类及错误修复。若开发企业或商业软件,建议选择Oracle JDK,因其经过彻底测试且稳定。尽管有人反馈使用OpenJDK时可能遇到应用崩溃问题,但切换至Oracle JDK通常可解决。

在响应性和JVM性能方面,Oracle JDK相比OpenJDK提供更好性能。

Oracle JDK不为即将发布的版本提供长期支持,用户需通过更新至最新版本来获取支持。

Oracle JDK依据二进制代码许可协议获得许可,而OpenJDK依据GPL v2许可获得许可。

原文链接:https://blog.csdn.net/ThinkWon/article/details/104390612

总结

本文到此结束,希望能为您提供帮助,也欢迎您关注本站更多内容!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。