ad

 自1946年2月14日世界上首款计算机问世,第一代计算机语言“机器语言”便诞生了,它使用的是最原始的穿孔卡片,这种卡片上使用的语言只有专家才能理解,与人类语言差别极大。这种语言本质上是计算机能识别的唯一语言,人类很难理解。为了能让人们更容易理解并编写,于是便有了第二代的“汇编语言”,相比机器语言,汇编语言大大前进了一步,尽管它还是太复杂,人们在使用时很容易出错误,但毕竟许多数码已经开始用字母来代替。简单的“0、1”数码谁也不会理解,但字母是人们能够阅读并拼写的。虽然第二代计算机语言仍然是“面向机器”的语言,但它已注定成为机器语言向更高级语言进化的桥梁。当计算机语言发展到第三代时,就进入了“面向人类”的语言阶段。你可以阅读、并直接用人类的语言来输入。对我们汉语来说,目前还不能用中文汉字来输入指令,这主要是因为中文的输入还没有一个非常好的手段。第三代语言被人们称之为“高级语言”。高级语言是一种接近于人们使用习惯的程序设计语言。它允许用英文写计算程序,程序中所使用的运算符号和运算式子,都和我们日常用的数学式子差不多。高级语言容易学习,通用性强,书写出的程序比较短,便于推广和交流,是很理想的一种程序设计语言。我们今天讲述的就是第三代语言“高级语言“中的Java语言。

 

 


1.JAVA语言的诞生!  

    在1991年时候,James Gosling在Sun公司的工程师小组想要设计这样一种主要用于像电视盒这样的消费类电子产品的小型计算机语言。这些电子产品有一个共同的特点:计算处理能力和内存都非常有限。所以要求:语言必须非常小且能够生成非常紧凑的代码,这样才能在这样的环境中执行。另外,由于不同的厂商选择不同的CPU,因此,要求该语言不能和特定的体系结构绑在一起,要求语言本身是中立的,也就是跨平台的。最初这个语言命名为“Green”,类似于绿色软件的意思。其原先的目的是为家用消费电子产品开发一个分布式代码系统, 这样我们可以把E-mail发给电冰箱、 电视机等家用电器, 对它们进行控制, 和它们进行信息交流。开始, 准备采用C++,但C++太复杂, 安全性差, 最后基于C++开发一种新的语言Oak,Oak是一种用于网络的精巧而安全的语言, Sun公司此投标一个交互式电视项目, 但结果被SGI打败。 可怜的Oak几乎无家可归, 恰巧这时Mark Ardreesen开发的Mosaic和Netscape启发了Oak项目组的成员。他们用一种全新的语言编写了一款浏览器,得到了Sun公司首席执行官Scott McNealy的支持。在一次几位该成员组的会员在一家名为“爪蛙”咖啡的店里正在讨论给这个新的语言取什么名字时,有一个人灵机一动说:“就叫Java怎样”, 得到了其他人的赞赏, 于是, Java语言就诞生了。

 

 2.JAVA语言发展历程!

    1995523日,Java语言正式诞生。

    1996年1月,第一个JDK-JDK1.0诞生。

       新特性及更新修改:

                          Sun Classic VM(虚拟机)

                          Applet(java小应用程序)

                          AWT(java图形设计)

 

    1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入Java技术。

    1996年9月,约8.3万个网页应用了Java技术来制作。

    1997年2月18日,JDK1.1发布。

       新特性及更新修改:  

  •  
    •  
      •     JAR(jar包)
      • JDBC(Java DataBase Connectivity)(连接数据库)
      • JavaBeans(java规范)
      • RMI(远程调用)
      • Inner Class(内部类)
      • Reflection(反射)
    •  

    1997年4月2日,JavaOne会议召开,参与者超过万人,创造当时全球同类会议规模之纪录。

    1997年9月,JavaDeveloperConnection社区成员超过十万。

    1998年2月,JDK1.1被下载超过2,000,000次。

    1998年12月8,Java的企业平台Java EE正式发布。

    1999年6月,Sun公司发布Java的三大版本:标准版(Java SE)、企业版(Java EE)、微型版(Java ME)。

    2000年5月8日,JDK1.3发布。

      新特性及更新修改:

  •  
    •  
      • 数学运算
      • Timer API(时间)
      • Java Sound API(声音)
      • CORBA IIOP实现RMI的通信协议
      • Java 2D新特性
      • jar文件索引
    •  

 

    2000年5月29日,JDK1.4发布。

    2001年6月5日,NOKIA宣布,到2003年将出售1亿部支持Java的手机。

    2001年9月24日,Java EE 1.3发布。

    2002年2月26日,J2SE1.4发布,自此Java的计算能力有了大幅提升。

    2004年9月30日,J2SE1.5发布,是Java语言发展史上的又一里程碑事件。为了表示这个版本的重要性,Java SE 1.5正式更名为Java SE 5.0。

      新特性及更新修改:

  •  
    •  
      • 自动装箱拆箱 
      • 泛型 
      • 元数据
      • Introspector(内省)
      • enum(枚举)
      • 静态引入
      • 可变长参数(Varargs)
      • foreach(高级虚幻)
      • JMM(内存模型)
      • concurrent(并发包)
    •  

    2006年12月,Sun公司发布了JDK1.6(也被称为Java SE 6)。一直以来,Sun公司维持着大约2年发布一次JDK新版本的习惯。

    2009年4月20日,Oracle宣布将以每股9.5美元的价格收购Sun,该交易的总价值约为74亿美元。但Oracle通过收购Sun公司获得了两项软件资产:Java和Solaris。2007年11月,Java语言作为服务器端编程语言,已经取得了极大地成功;而Android平台的流行,则让Java语言获得了在客户端程序上大展拳脚的机会。

    2011年7月28日,Oracle公司发布了Java SE 7,这次版本升级经过了将近5年时间。Java SE 7也是Oracle发布的第一个Java版本,引入了二进制整数、支持字符串的switch语句、多异常捕捉、自动关闭资源的try语句等新特性。

    2014年3月18日,Oracle公司发布了Java SE 8,这次版本升级为Java带来了全新的Lambda表达式。除此之外,Java 8还增加了大量新特性,这些新特性使得Java变得更加强大。

    目前Java的版本已经更新了好几个版本,但目前市场主流还是使用的JDK8。

  •  
  • 1.3Java组成
    • Java是由哪四方面组成的,你知道吗?
    • ●Java编程语言,即语法。
    • ●Java文件格式,即各种文件夹、文件的后缀。
    • ●Java虚拟机(JVM),即处理*.class文件的解释器。
    • ●Java应用程序接口(Java API)。
    • 二、Java能做什么
    • ava技术已经是无处不在了,不管是在网络应用程序上,还是嵌入式,还是基于web都有Java的声影。市场上Java到底能做什么事情?哪些工作和Java有关?目前主要体现在这些方面上:
    • 大数据:第一就是在大数据,在大数据技术里面Hadoop是一个比较有代表性的技术,那么Hadoop和其他的一些大数据处理技术都是用Java或者是基于Java开发的。
    • Android:除此之外还有Android的应用,从安卓刚刚起步一直到现在,有许多的安卓应用都是Java程序员开发的,虽然安卓运用了不同的Java虚拟机和不同的封装方式,但是最根本的代码还是用Java语言编写的。
    • 服务器程序:还有一类程序就是服务器程序,你也可以理解为基于web的应用程序,Java在金融服务业的应用是非常广泛的,大多数的银行会用Java来编写前台和后台的电子交易系统。
    • 网站开发:Java在网站应用领域里面,尤其是电子商务和网站开发里面占有很大部分的席位。也可以应用不同的一些框架来进行web项目开发,比如说我们耳熟能详的SpringMVC, STRUCTS,Hibernate Servlet,jsp等等,尤其是在政府中的一些项目当中涉及到安全的项目中比较受欢迎。除此之外,还有一些医院,保险等这些部门也是经常用到Java来进行网站的开发。
    • 软件工具:很多常用的一些软件开发工具都是对Java支持的,比如说eclipse,idea,IntelliJ 等等,还有一些第三方的交易系统也大多数是用Java编写的。
    • 嵌入式领域:除此之外,Java在嵌入式领域里面的发展空间非常大,在这个平台上一般情况下用130kb左右,比如说在智能卡或者是传感器上面,进行写程序。本来最开始的时候Java也是涉及嵌入式设备,而且Java是进入到这个领域比较早的。
    • 高频交易:比如说股票,因为Java平台能够大幅度的提高这些平台的特性和即时编译,Java平台大幅度的提高了平台的特性和即时编译性,他也能够像C++一样传递数据,正是因为这样一个原因,Java也成为程序员编写交易平台的语言,因为他具有安全性和有可维护性。
    • 科学应用:Java在科学应用领域时一个比较好的选择,包括自然语言的一些处理,最主要有这样一个原因,Java要比起C++或者其他语言来讲,他的安全性,便携性和可维护性发挥的时比较好的。、
    • 我这里说到的仅仅只是Java常用的一些领域,Java语言作为软件行业作为默认的一种开发语言,在各个领域都有广泛的应用,可以说时无处不在的。
    • 三、Java语言的特点
    •  它 具 有 如 下 特 性: 简 单 性、 面 向 对 象、 分 布 式、 解 释 型、 可 靠、 安 全、 平 台 无 关、 可 移 植、 高 性 能、 多 线 程、 动 态 性 等。 下 面 我 们 将 重 点 介 绍Java 语 言 的 面 向 对 象、 平 台 无 关、 分 布 式、 多 线 程、 可 靠 和 安 全 等 特 性。
    • 1 ? 面 向 对 象
    • 面 向 对 象 其 实 是 现 实 世 界 模 型 的 自 然 延 伸。 现 实 世 界 中 任 何 实 体 都 可 以 看 作 是 对 象。 对 象 之 间 通 过 消 息 相 互 作 用。 另 外, 现 实 世 界 中 任 何 实 体 都 可 归 属 于 某 类 事 物, 任 何 对 象 都 是 某 一 类 事 物 的 实 例。 如 果 说 传 统 的 过 程 式 编 程 语 言 是 以 过 程 为 中 心 以 算 法 为 驱 动 的 话, 面 向 对 象 的 编 程 语 言 则 是 以 对 象 为 中 心 以 消 息 为 驱 动。 用 公 式 表 示, 过 程 式 编 程 语 言 为: 程 序= 算 法+ 数 据; 面 向 对 象 编 程 语 言 为: 程 序= 对 象+ 消 息。
    • 所 有 面 向 对 象 编 程 语 言 都 支 持 三 个 概 念: 封 装、 多 态 性 和 继 承,Java 也 不 例 外。 现 实 世 界 中 的 对 象 均 有 属 性 和 行 为, 映 射 到 计 算 机 程 序 上, 属 性 则 表 示 对 象 的 数 据, 行 为 表 示 对 象 的 方 法( 其 作 用 是 处 理 数 据 或 同 外 界 交 互)。 所 谓 封 装, 就 是 用 一 个 自 主 式 框 架 把 对 象 的 数 据 和 方 法 联 在 一 起 形 成 一 个 整 体。 可 以 说, 对 象 是 支 持 封 装 的 手 段, 是 封 装 的 基 本 单 位。Java 语 言 的 封 装 性 较 强, 因 为Java 无 全 程 变 量, 无 主 函 数, 在Java 中 绝 大 部 分 成 员 是 对 象, 只 有 简 单 的 数 字 类 型、 字 符 类 型 和 布 尔 类 型 除 外。 而 对 于 这 些 类 型,Java 也 提 供 了 相 应 的 对 象 类 型 以 便 与 其 他 对 象 交 互 操 作。
    • 多 态 性 就 是 多 种 表 现 形 式, 具 体 来 说, 可 以 用“ 一 个 对 外 接 口, 多 个 内 在 实 现 方 法” 表 示。 举 一 个 例 子, 计 算 机 中 的 堆 栈 可 以 存 储 各 种 格 式 的 数 据, 包 括 整 型, 浮 点 或 字 符。 不 管 存 储 的 是 何 种 数 据, 堆 栈 的 算 法 实 现 是 一 样 的。 针 对 不 同 的 数 据 类 型, 编 程 人 员 不 必 手 工 选 择, 只 需 使 用 统 一 接 口 名, 系 统 可 自 动 选 择。 运 算 符 重 载(operator overload) 一 直 被 认 为 是 一 种 优 秀 的 多 态 机 制 体 现, 但 由 于 考 虑 到 它 会 使 程 序 变 得 难 以 理 解, 所 以Java 最 后 还 是 把 它 取 消 了。
    • 继 承 是 指 一 个 对 象 直 接 使 用 另 一 对 象 的 属 性 和 方 法。 事 实 上, 我 们 遇 到 的 很 多 实 体 都 有 继 承 的 含 义。 例 如, 若 把 汽 车 看 成 一 个 实 体, 它 可 以 分 成 多 个 子 实 体, 如: 卡 车、 公 共 汽 车 等。 这 些 子 实 体 都 具 有 汽 车 的 特 性, 因 此, 汽 车 是 它 们 的“ 父 亲”, 而 这 些 子 实 体 则 是 汽 车 的“ 孩 子”。Java 提 供 给 用 户 一 系 列 类(class),Java 的 类 有 层 次 结 构, 子 类 可 以 继 承 父 类 的 属 性 和 方 法。 与 另 外 一 些 面 向 对 象 编 程 语 言 不 同,Java 只 支 持 单 一 继 承。
    • 2 ? 平 台 无 关 性
    • Java 是 平 台 无 关 的 语 言 是 指 用Java 写 的 应 用 程 序 不 用 修 改 就 可 在 不 同 的 软 硬 件 平 台 上 运 行。 平 台 无 关 有 两 种: 源 代 码 级 和 目 标 代 码 级。C 和C++ 具 有 一 定 程 度 的 源 代 码 级 平 台 无 关, 表 明 用C 或C++ 写 的 应 用 程 序 不 用 修 改 只 需 重 新 编 译 就 可 以 在 不 同 平 台 上 运 行。
    • Java 主 要 靠Java 虚 拟 机(JVM) 在 目 标 码 级 实 现 平 台 无 关 性。JVM 是 一 种 抽 象 机 器, 它 附 着 在 具 体 操 作 系 统 之 上, 本 身 具 有 一 套 虚 机 器 指 令, 并 有 自 己 的 栈、 寄 存 器 组 等。 但JVM 通 常 是 在 软 件 上 而 不 是 在 硬 件 上 实 现。( 目 前,SUN 系 统 公 司 已 经 设 计 实 现 了Java 芯 片, 主 要 使 用 在 网 络 计 算 机NC 上。 另 外,Java 芯 片 的 出 现 也 会 使Java 更 容 易 嵌 入 到 家 用 电 器 中。)JVM 是Java 平 台 无 关 的 基 础, 在JVM 上, 有 一 个Java 解 释 器 用 来 解 释Java 编 译 器 编 译 后 的 程 序。Java 编 程 人 员 在 编 写 完 软 件 后, 通 过Java 编 译 器 将Java 源 程 序 编 译 为JVM 的 字 节 代 码。 任 何 一 台 机 器 只 要 配 备 了Java 解 释 器, 就 可 以 运 行 这 个 程 序, 而 不 管 这 种 字 节 码 是 在 何 种 平 台 上 生 成 的( 过 程 如 图1 所 示)。 另 外,Java 采 用 的 是 基 于IEEE 标 准 的 数 据 类 型。 通 过JVM 保 证 数 据 类 型 的 一 致 性, 也 确 保 了Java 的 平 台 无 关 性。
    • 图1
    • Java 的 平 台 无 关 性 具 有 深 远 意 义。 首 先, 它 使 得 编 程 人 员 所 梦 寐 以 求 的 事 情( 开 发 一 次 软 件 在 任 意 平 台 上 运 行) 变 成 事 实, 这 将 大 大 加 快 和 促 进 软 件 产 品 的 开 发。 其 次Java 的 平 台 无 关 性 正 好 迎 合 了“ 网 络 计 算 机” 思 想。 如 果 大 量 常 用 的 应 用 软 件( 如 字 处 理 软 件 等) 都 用Java 重 新 编 写, 并 且 放 在 某 个Internet 服 务 器 上, 那 么 具 有NC 的 用 户 将 不 需 要 占 用 大 量 空 间 安 装 软 件, 他 们 只 需 要 一 个Java 解 释 器, 每 当 需 要 使 用 某 种 应 用 软 件 时, 下 载 该 软 件 的 字 节 代 码 即 可, 运 行 结 果 也 可 以 发 回 服 务 器。 目 前, 已 有 数 家 公 司 开 始 使 用 这 种 新 型 的 计 算 模 式 构 筑 自 己 的 企 业 信 息 系 统。
    • 3 ? 分 布 式
    • 分 布 式 包 括 数 据 分 布 和 操 作 分 布。 数 据 分 布 是 指 数 据 可 以 分 散 在 网 络 的 不 同 主 机 上, 操 作 分 布 是 指 把 一 个 计 算 分 散 在 不 同 主 机 上 处 理。
    • Java 支 持WWW 客 户 机/ 服 务 器 计 算 模 式, 因 此, 它 支 持 这 两 种 分 布 性。 对 于 前 者,Java 提 供 了 一 个 叫 作URL 的 对 象, 利 用 这 个 对 象, 你 可 以 打 开 并 访 问 具 有 相 同URL 地 址 上 的 对 象, 访 问 方 式 与 访 问 本 地 文 件 系 统 相 同。 对 于 后 者,Java 的applet 小 程 序 可 以 从 服 务 器 下 载 到 客 户 端, 即 部 分 计 算 在 客 户 端 进 行, 提 高 系 统 执 行 效 率。
    • Java 提 供 了 一 整 套 网 络 类 库, 开 发 人 员 可 以 利 用 类 库 进 行 网 络 程 序 设 计, 方 便 得 实 现Java 的 分 布 式 特 性。
    • 4 ? 可 靠 性 和 安 全 性
    • Java 最 初 设 计 目 的 是 应 用 于 电 子 类 消 费 产 品, 因 此 要 求 较 高 的 可 靠 性。Java 虽 然 源 于C++, 但 它 消 除 了 许 多C++ 不 可 靠 因 素, 可 以 防 止 许 多 编 程 错 误。 首 先,Java 是 强 类 型 的 语 言, 要 求 显 式 的 方 法 声 明, 这 保 证 了 编 译 器 可 以 发 现 方 法 调 用 错 误, 保 证 程 序 更 加 可 靠; 其 次,Java 不 支 持 指 针, 这 杜 绝 了 内 存 的 非 法 访 问; 第 三,Java 的 自 动 单 元 收 集 防 止 了 内 存 丢 失 等 动 态 内 存 分 配 导 致 的 问 题; 第 四,Java 解 释 器 运 行 时 实 施 检 查, 可 以 发 现 数 组 和 字 符 串 访 问 的 越 界, 最 后,Java 提 供 了 异 常 处 理 机 制, 程 序 员 可 以 把 一 组 错 误 代 码 放 在 一 个 地 方, 这 样 可 以 简 化 错 误 处 理 任 务 便 于 恢 复。
    • 由 于Java 主 要 用 于 网 络 应 用 程 序 开 发, 因 此 对 安 全 性 有 较 高 的 要 求。 如 果 没 有 安 全 保 证, 用 户 从 网 络 下 载 程 序 执 行 就 非 常 危 险。Java 通 过 自 己 的 安 全 机 制 防 止 了 病 毒 程 序 的 产 生 和 下 载 程 序 对 本 地 系 统 的 威 胁 破 坏。 当Java 字 节 码 进 入 解 释 器 时, 首 先 必 须 经 过 字 节 码 校 验 器 的 检 查, 然 后,Java 解 释 器 将 决 定 程 序 中 类 的 内 存 布 局, 随 后, 类 装 载 器 负 责 把 来 自 网 络 的 类 装 载 到 单 独 的 内 存 区 域, 避 免 应 用 程 序 之 间 相 互 干 扰 破 坏。 最 后, 客 户 端 用 户 还 可 以 限 制 从 网 络 上 装 载 的 类 只 能 访 问 某 些 文 件 系 统。 上 述 几 种 机 制 结 合 起 来, 使 得Java 成 为 安 全 的 编 程 语 言。
    • 5 ? 多 线 程
    • 线 程 是 操 作 系 统 的 一 种 新 概 念, 它 又 被 称 作 轻 量 进 程, 是 比 传 统 进 程 更 小 的 可 并 发 执 行 的 单 位。C 和C++ 采 用 单 线 程 体 系 结 构, 而Java 却 提 供 了 多 线 程 支 持。
    • Java 在 两 方 面 支 持 多 线 程。 一 方 面,Java 环 境 本 身 就 是 多 线 程 的。 若 干 个 系 统 线 程 运 行 负 责 必 要 的 无 用 单 元 回 收, 系 统 维 护 等 系 统 级 操 作; 另 一 方 面,Java 语 言 内 置 多 线 程 控 制, 可 以 大 大 简 化 多 线 程 应 用 程 序 开 发。Java 提 供 了 一 个 类Thread, 由 它 负 责 启 动 运 行, 终 止 线 程, 并 可 检 查 线 程 状 态。Java 的 线 程 还 包 括 一 组 同 步 原 语。 这 些 原 语 负 责 对 线 程 实 行 并 发 控 制。 利 用Java 的 多 线 程 编 程 接 口, 开 发 人 员 可 以 方 便 得 写 出 支 持 多 线 程 的 应 用 程 序, 提 高 程 序 执 行 效 率。 必 须 注 意 地 是,Java 的 多 线 程 支 持 在 一 定 程 度 上 受 运 行 时 支 持 平 台 的 限 制。 例 如, 如 果 操 作 系 统 本 身 不 支 持 多 线 程,Java 的 多 线 程 特 性 可 能 就 表 现 不 出 来
    • 四、第一个Java程序
      • 4.1、怎么安装JDK并安装
      • 首先我们需要下载JDK,在官网上下载,如图,是我下载好的;
      • 我们可以看到是一个【.gz】格式的压缩包,所以我们需要进行解压;使用命令为【tar -xvzf jdk-8u77-linux-i586.gz】,当然我们可以使用【-C】参数解压到指定文件夹,下图是解压的过程;
      • 解压完成之后,我们切换到我们的目标目录,也就是我们将JDK解压到的目录,然后使用【ls】命令展开;
      • 展开之后,我们看到有个名字为【jdk1.8.0_77】的目录,cd进入,然后ls展开,看到的就是JDK包含的文件;
      • 这样我们就安装成功了
        •  
        • 4.2、怎么配置配置环境变量
        • 接下来配置环境变量;使用vim打开/etc/profile;在底部加上:JAVA_HOME=/解压路径/jdk1.8.0_77PATH=$JAVA_HOME/bin:$PATH CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar export PATH JAVA_HOME CLASSPATH
        • 然后使用命令【source /etc/profile】命令,使我们配置的环境变量生效;
        • 最后我们使用命令测试一下看是否配置成功;运行【javac】看是否报错;由图可以看到并没有报错;
        • 运行【java -version】查看版本号;
          •  
          • 4.3、第一个Java程序的代码(hello world)
          • 第一步,在D:\下创建一个Hello.java文件
          • 编辑Hello.java文件,输入内容为(注意:标点符号全为英语半角)
          • 解释:
          • public 意思是公共的,
          • class用于定义类的关键字,
          • Hello为类名(用户自定义),
          • main方法是程序的入号,格式固定。
          • main方法中是一个打印字符串语句(调用系统输出的println方法);
          • System是一个里面包含系统操作的系统类
          • Out 为输出意思
          • "hello World!" 为要输出的字符串
          • 举报/反馈

 

posted @ 2021-09-18 11:54  似鬼非鬼  阅读(11)  评论(0)    收藏  举报