Java+简单介绍

本文简要介绍了Java的历史,从1995年诞生至今的重要里程碑,以及Java的三个主要版本:Java EE, Java SE和Java ME。文章重点讨论了Java语言的面向对象特性,包括与汇编语言、程序语言的对比,以及Java的跨平台性、标准化、异常处理、动态类加载和自动垃圾回收机制等核心特点。" 121529827,9471137,"解决Faster R-CNN TensorFlow训练报错:keep_inds = np.append(fg_inds, bg_inds) (Pdb)
摘要由CSDN通过智能技术生成

Java 简介

1. Java 的历史

1995 年 5 月 23 日,Sun Microsystems 公司宣布 Java 语言诞生, 当时使用 Java 的总人数还不到 30 人,可能包括 Java 语言之父詹姆斯·高斯林在内的大多数联合创始人都无法预想,Java 在未来的二十年间,居然会给互联网乃至我们的生活带来如此深远的影响。

目前 Java 提供以下三个版本:

Java Platform, Enterprise Edition(Java EE:Java 平台企业版);

Java Platform, Standard Edition(Java SE:Java 平台标准版);

Java Platform, Micro Edition(Java ME:Java 平台微型版)。

2006 年,SUN 公司在 JavaOne 大会上,宣布在 GNU 通用公共协议(GPL)的构架下向开源世界贡献 Java 平台,这次开放的 Java 版本包括了其标准版(Standard)、微型版(Micro)以及企业版(Enterprise)。这是一个具有 “历史性意义” 的改变。

2. 语言特性

Java 语言的诞生,重新定义了面向对象编程(OOP)。Java 语言的创建,有以下几个目标:
简单易学,并且面向对象;
必须健壮且安全;
摆脱平台的依赖性;
高性能执行;
必须是可解释的,多线程的,动态的。

2.1 面向对象

面向对象(Object Oriented)指的是一种编程方法。面向对象的主要思想是:围绕着我们所操纵的 “事物”(即对象)来设计软件。 计算机硬件的发展为软件技术的发展提供了更好的土壤,为了让大型软件项目易于管理,降低开发和维护的成本,面向对象技术也就应运而生。为了了解面向对象技术的诞生原因,我们下面来介绍几种比较具有代表性的软件技术。

2.1.1 汇编语言

汇编语言是软件技术的开端,这种语言与机器语言非常接近,并且可以很容易地转换为可执行代码。使用汇编语言的程序员,必须了解计算机的详细体系结构才能编写程序。

2.1.2 程序语言

在汇编语言之后,开发了高级语言,可以使用语言的编译器(如 gcc)将高级程序代码转换为机器指令。这样程序员无需再深入了解计算机硬件的体系结构。为了提高代码的可复用性并最大程度地减少 GOTO 指令的使用,引入了面向过程技术。虽然简化了软件流程控制的创建和维护,但是忽视了数据的组织。调试和维护许多全局变量的程序,变成了程序员的一场噩梦。

2.1.3 面向对象语言

在面向对象的语言中,数据被抽象地封装在对象中。特定于对象中的数据只能通过该对象来进行访问。这样,程序就成为了对象之间的一系列交互。Java 语言就是一个纯面向对象的语言。

2.2 跨平台性

我们也许常常听到一句口号 ——“一次编译,到处执行(write once, run anywhere.)”,这里说的就是 Java 的跨平台性,我们首先来看下在 c 或 c++ 中,代码是如何在不同平台运行的:

在 c 或 c++ 中,我们首先要将源代码文件编译为机器代码文件,然后再去执行它。这个过程中,机器代码文件必须在为其编译的平台才能执行(这里的平台指的是 Windows、Linux、Mac OS 等),也就是说,我们的代码如果希望在多个平台执行,那就必须多次编译程序。这不仅给程序员带来了繁琐的开发步骤(代码稍做变更就要重新编译整个程序),也给程序带来了更大的漏洞风险。当代码已经编译为可执行文件时,这个可执行文件不能动态更改,此时需要更改代码重新编译,以替换旧的可执行文件。

我们来看看 Java 是如何做的吧:

Java 的思想是,将代码编译为中间语言,中间语言是字节码,解释器是 Java 虚拟机(JVM)。字节码文件可以通用,JVM 是特定于平台的。
每一个平台都需要一个 JVM ,这里 JVM 是实现 “到处执行” 的关键前提,所以,在 Java 中,我们只需要生成一个字节码文件,就可以保证我们编写的程序在任何平台都能运行了。

2.3 标准化

在 Java 中,提供了大量的标准化库,这保证了我们使用统一的接口对程序进行控制。

2.4 异常处理

异常处理的老方式是:让每个函数返回一个错误代码,调用者会检查其返回的内容,这样就导致了代码中到处都是错误码的校验,从而让源码变得难以阅读。

在异常处理的新方式中,函数或方法不再返回错误码,而是以抛出异常的方式来进行异常处理,在 Java 中可以使用 catch 关键字来捕获在 try 语句块中所发生的异常。这样我们无需频繁通过定义错误代码的方式处理异常,代码可读性大大提高。

2.5 动态类加载

在 Java 中,如果在执行阶段不需要某个类,那么这个类就不会被编译为字节码。在网络编程中,这个特性非常常用。当我们不知道将执行什么代码时,程序可以从文件系统或远端服务器加载类。

2.6 自动垃圾回收机制

在常规语言(例如 C 和 C++)中,程序员必须确保已分配的内存被释放。防止造成内存泄漏的麻烦。

内存资源或缓冲区具有特定的操作模式以获得最佳性能。一旦缓冲区中充满了数据,就需要在不再使用其内容之后将其清除。如果程序员忘记清除其代码中的内容,则内存很容易过载。Java 使用自动垃圾收集器来管理对象生命周期中的内存。程序员确定何时创建对象,一旦不再使用对象,Java 运行时将负责恢复内存。一旦没有了对对象的引用,则垃圾回收器将自动释放无法访问的内存。

自动垃圾回收机制,让使用 Java 编写的代码更加健壮,降低了内存泄漏和溢出的风险。程序员唯一需要注意的是对象创建的速度。如果应用程序创建对象的速度超过了垃圾收集器释放对象的速度,则可能导致内存相关问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值