更新时间:2022-07-26 16:27:34 来源:极悦 浏览1000次
James Gosling 于 1991 年 6 月作为一个名为“Oak”的项目开创了 Java。Gosling 的目标是开发一种虚拟机和语言,其具有像 C 一样的著名符号,但比 C/C++ 更精确和简单。1995 年,Java 1.0 是第一次公开执行。它承诺在具有免费运行时的流行平台上“编写一次,随处运行”。它非常安全且可配置,具有限制网络和文件访问的安全性。在稳定的“小程序”设置中,重要的网络浏览器很快在其标准设置中实现了它。
Java 语言的开发有五个主要目标:
1. 应采用面向对象的方法。
2. 应该允许多个操作系统运行同一个程序。
3.应该有内置的计算机网络支持。
4. 它应该被配置为安全地执行来自远程源的代码。
5. 通过选择其他面向对象语言的哪些部分被认为是可接受的。它应该易于使用。
Java 程序员通常认为使用 CORBA、Internet Communications Engine 或 OSGi 等扩展来实现网络支持和远程代码执行目标是合适的。
面向对象
第一个元素,面向对象 (OO),适用于编程和设计过程。虽然可能有几种 OO 含义,但一个关键的区别原则是程序设计以组合不同的数据类型,并通过它们各自的操作进行操作。然后将数据和代码组合成称为对象的实体。
一个实体可以被认为是一个部分(代码)和自包含行为的状态(数据)。这个想法是将变化的项目与保持不变的事物分开;任何数据结构的更改也意味着在该数据上运行的代码(反之亦然)被相应地修改。这种对兼容对象的划分为软件系统的设计提供了更可靠的基础。目的是促进大型软件项目的管理,提高质量,减少失败项目的数量。
OO 的另一个主要目标是创建更常见的工件,以便项目之间的软件可以更加可重用。例如,一个通用的“客户”对象应该具有基本相同的一组基本行为,尤其是当这些项目在某个基本层面重叠时,就像它们在大型组织中经常做的那样。
希望从这个意义上说,软件对象可以更多地被视为插件组件,以便软件行业可以主要基于当前经过良好测试的部分构建项目,从而显着减少开发时间。软件可重用性获得了混合的功能结果,主要有两个困难:真正通用对象的概念和通信方法知之甚少。
平台独立性
第二个特性,平台独立性,意味着 Java 编写的程序必须平等地运行在不同的硬件上。一个人应该能够编写一次并在任何地方执行程序。大多数 Java 编译器通过将 Java 的“中途”编译为字节码代码,特别是字节码 Java,简化了 Java 平台特定的机器指令来完成此任务。
然后代码在虚拟机上运行,该虚拟机在主机硬件上以本机代码解释和执行通用 Java 字节码。此外,标准化库可用于统一访问主机功能,例如图形、线程和网络,仅举几例。
请注意,虽然编译阶段是精确的,但 JIT 编译器会将 Java 字节码解释或转换为本地机器指令。Java 编译器也被实现来编译本地目标代码,例如 GCJ,以移除中间字节码级别。尽管如此,只有单一架构可以运行这些编译器的性能。
Sun 的 Java 许可证要求“兼容”所有实现。在 Sun 辩称 RMI 和 JNI 接口不接受 Microsoft 实现并引入特定于平台的功能后,这导致了与 Microsoft 的法律纠纷。Microsoft 将不再随 Windows 一起提供 Java,Internet Explorer 将不再支持在最新版本的 Windows 中没有第三方插件的 Java 小程序。
但是,对于这些版本和其他 Windows 版本,Sun 和其他公司免费提供 Java 运行时系统。第一种语言实现使用编码虚拟机来实现可移植性。这些创新创建的程序比那些编译成本地可执行文件(例如 C 或 C++)的程序执行得稍慢,因此该语言被认为是糟糕的。最近的 JVM 部署使用多种技术生成程序,运行速度比以前快得多。
第一种技术是将本机代码直接编译成更传统的编译器,完全跳过字节码。这会产生良好的结果,但会以便携性为代价。当程序运行时,Java 字节码作为一种称为即时编译 (JIT) 的不同技术被转换为本机代码。
该程序比解释代码运行得更快,并且在执行过程中也会产生编译开销。更高级的 VM 使用动态重新编译,其中 VM 可以选择性地重新编译和优化软件的基本组件,评估行为。动态重新编译可以做的不仅仅是静态优化,因为动态编译器可以使用运行时环境和加载类的集合来构造优化。JIT 的动态重建和编译允许 Java 程序从本机代码速度中受益,而不会失去可移植性。
自动垃圾收集
Java 自动内存管理模型背后的一个概念是为程序员节省手动内存管理的压力。在特定语言中,程序员分配内存来构建存储在堆中的任何对象,然后手动管理内存以删除这些对象。当程序员忘记重新定位内存并且没有及时键入代码时,可能会发生内存泄漏:它会消耗大量内存。此外,当内存区域被扩展两次时,程序可能会变得不稳定并崩溃。最后,在非废物收集环境中跟踪和最终确定分配的用户代码存在一些开销和复杂性。
自动垃圾收集避免了 Java 中可能出现的这个问题。创建对象时,由程序员决定,Java 负责管理对象生命周期。持有一个引用,程序或其他对象可能会提到一个对象(从低级的角度来看,它是它在堆上的地址)。如果没有对对象的引用,Java 垃圾收集器会自动删除不可访问的对象,从而释放内存并避免内存泄漏。如果程序员的代码包含对不再需要的项的引用,也可能存在内存泄漏——换句话说,它仍然可能发生在更高的概念级别。
以上就是极悦小编介绍的"学习Java的技术要点,重要学习指南",希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为您务。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习