刨根问底—从Java语言定义深究Java
2023-03-29 15:14:18
我们先来看Java语言定义:Java是一种简单、面向对象、精通网络、可解释、强大、安全、与系统结构无关、可移植、高性能、多线程、动态计算机语言。让我们认真考虑到Java语言每个定义,然后从Java语言定义深究Java。
Java是一种简单的语言
Java最初使用C和C ++建模减去了一些潜在的令人困惑的功能,比如指针。多个实现继承和运算的重载一些Cava以外的Cava / C ++功能。C / C ++Java的必要功能是垃圾回收功能,它可以自动回收对象和数组。
Java是一种面向对象的语言
Java的焦点使开发人员能够适应Java来解决问题,而不是强迫我们处理问题以满足语言约束。这不同于C等结构化语言。例如,Java使用你可以专注于储蓄账户对象,C则需要你分别考虑储蓄账户的状态(如余额)和行为(如存款和取款)。
Java是一种精通网络的语言
Java 丰富的网络库可以处理传输控制协议/互联网协议,如HTTP(超文本传输协议)和FTP(文件传输协议)(TCP / IP)网络协议变得容易,简化了建立网络连接的任务。此外,通过统一的资源定位器,Java程序可以使用(URL)通过TCP / IP网络访问对象和从本地文件系统访问对象一样容易。
Java是一种解释性语言
在运行时,Java程序在底层平台(如Windows或Linux)上间接执行,通过虚拟机(假设平台的软件表示)和相关执行环境。虚拟机通过解释将Java程序的字节码(指令和相关数据)转换为特定于平台的指令。解释是找出字节码指令的含义义,然后选择等效“固定”实现平台特定指令的动作。然后,虚拟机将在平台上执行这些特定指令。
解释使Java程序更容易调试错误,因为在运行过程中可以获得更多的编译信息。解释还可以将Java程序之间的链接步骤延迟到运行过程中,从而加快开发速度。
Java是一种强大的语言
Java程序必须可靠,因为它们用于消费和关键任务应用程序,从Blu-ray播放器到车辆导航或空中控制系统。帮助Java变得强大的语言功能包括声明、重复类型检查(以防止版本不匹配)、具有自动边界检查功能的真实数组和省略指针。
Java强壮的另一个方面是,循环必须由布尔表达式而不是整数表达式(包括false和非零值0)控制。例如,Java是不允许的出现C风格的循环,比如while (x) x++;因为循环可能不会在预期的地方结束。相反,必须提供布尔表达式,如while (x != 10) x++;(这意味着循环将运行到x等于10)。
Java是一种安全的语言
Java程序用于网络/分布式环境。由于Java程序可以转移到各种网络平台,并在各种网络平台上执行,因此保护这些平台免受可能传播病毒、窃取信用卡信息或执行其他恶意行为的恶意代码是非常重要的。Java语言功能支持健壮性(如省略指针),可与安全功能(如Java沙箱安全模型和公共密钥加密)一起使用。这些功能共同防止病毒和其他危险代码在没有戒心的平台上造成严重破坏。
理论上讲,Java是安全的。事实上,已经测试过了出了并被利用各种安全漏洞。现状就是,当时的Sun Microsystems和oracle现在继续发布安全更新。
Java是一种与系统结构无关的语言
基于各种微处理器和操作系统的网络连接了具有不同系统结构的平台。不能期望Java生成特定于平台的指令,并使这些指令在网络中的各种平台上使用“理解”。相反,Java生成了与平台无关的字节码指令,每个平台都很容易理解(通过JVM实现)。
Java是一种可移植语言
中立的架构有助于移植。然而,与平台无关的字节码指令相比,Java具有更多的可移植性。考虑到整数类型的大小不能改变。例如,无论在哪里处理32位整数(例如,拥有16位寄存器和32位寄存器的平台或平台),都必须始终签署32位整数类型并占用32位。与64位寄存器一起)。Java的库也有助于可移植。必要时,它们提供类型,以最可移植的方式将Java代码与平台上特定的功能连接起来。
Java是一种高性能语言
解释产生的绩效水平通常绰绰有余。对于非常高性能的应用程序场景,Java使用可以分析和解释的字节码指令序列的即时编译,并将经常解释的指令序列编译成平台的特定指令。然后尝试解释这些字节码指令序列将导致平台的特定指令执行相同的效果,从而提高性能。
Java是一种多线程语言
一次完成多个任务的程序的性能必须得到提高,Java支持线程执行的概念。例如,在等待网络连接的输入时,管理图形用户界面(GUI)该程序使用另一个线程等待,而不是默认的GUI线程。这可以保持GUI的响应状态。Java的同步原语允许线程在不破坏数据的情况下安全地通信数据。(请参考Java Java在101系列其他地方讨论 线程编程。)
Java是一种动态语言
由于程序代码与库之间的互连是在运行过程中动态发生的,因此不需要显式链接。因此,当一个程序或其他图书馆开发时(例如,为了修复错误或提高性能),开发人员只需分发更新程序或图书馆。虽然动态行为导致版本更改时分发的代码较少,但这种分发策略也可能导致版本冲突。例如,开发人员从库中删除类型,或重命名它们。当公司分发更新的库时,依赖类型的现有程序将失败。为了大大降低这一问题,Java支持接口类型,就像双方之间的合同一样。
彻底弄清楚这些定义会教会我们很多Java的知识。最重要的是,它揭示了Java实际上既是语言又是平台这无疑是我们未来学好学精的事实Java奠定了坚实的基础。