zoukankan      html  css  js  c++  java
  • JAVA语 言 的 特 点

    Java到 底 是 一 种 什 么 样 的 语 言 呢? Java是 一 种 简 单 的 面 象 对 象 的 分 布 式 的 解 释 的 健 壮 的 安 全 的 结 构 中 立 的 可 移 植 的 性 能 很 优 异 的 多 线 程 的 动 态 的 语 言。

    [1]    简 单

      Java最 初 是 为 对 家 用 电 器 进 行 集 成 控 制 而 设 计 的 一 种 语 言, 因 此 它 必 须 简 单 明 了。Java语 言 的 简 单 性 主 要 体 现 在 以 下 三 个 方 面: 1. Java的 风 格 类 似 于C++, 因 而C++程 序 员 是 非 常 熟 悉 的。 从 某 种 意 义 上 讲,Java语 言 是C及C++语 言 的 一 个 变 种, 因 此,C++程 序 员 可 以 很 快 就 掌 握Java编 程 技 术。 2. Java摒 弃 了C++中 容 易 引 发 程 序 错 误 的 地 方, 如 指 针 和 内 存 管 理。 3. Java提 供 了 丰 富 的 类 库。

    [2]    面 向 对 象

      面 向 对 象 可 以 说 是Java最 重 要 的 特 性。Java语 言 的 设 计 完 全 是 面 向 对 象 的, 它 不 支 持 类 似C语 言 那 样 的 面 向 过 程 的 程 序 设 计 技 术。Java支 持 静 态 和 动 态 风 格 的 代 码 继 承 及 重 用。 单 从 面 向 对 象 的 特 性 来 看,Java类 似 于SmallTalk, 但 其 它 特 性、 尤 其 是 适 用 于 分 布 式 计 算 环 境 的 特 性 远 远 超 越 了SmallTalk。

    [3]    分 布 式

      Java包 括 一 个 支 持HTTP和FTP等 基 于TCP/IP协 议 的 子 库。 因 此,Java应 用 程 序 可 凭 借URL打 开 并 访 问 网 络 上 的 对 象, 其 访 问 方 式 与 访 问 本 地 文 件 系 统 几 乎 完 全 相 同。 为 分 布 环 境 尤 其 是Internet提?copy;动 态 内 容 无 疑 是 一 项 非 常 宏 伟 的 任 务, 但Java的 语 法 特 性 却 使 我 们 很 容 易 地 实 现 这 项 目 标。

    [4]    健 壮

      Java致 力 于 检 查 程 序 在 编 译 和 运 行 时 的 错 误。 类 型 检 查 帮 助 检 查 出 许 多 开 发 早 期 出 现 的 错 误。Java自 已 操 纵 内 存 减 少 了 内 存 出 错 的 可 能 性。Java还 实 现 了 真 数 组, 避 免 了 覆 盖 数 据 的 可 能。 这 项 功 能 特 征 大 大 缩 短 了 开 发Java应 用 程 序 的 周 期。 Java提 供Null指 针 检 测 数 组 边 界 检 测 异 常 出 口 字 节 代 码 校 验

    [5]    结 构 中 立

      另 外, 为 了 建 立Java作 为 网 络 的 一 个 整 体,Java将 它 的 程 序 编 译 成 一 种 结 构 中 立 的 中 间 文 件 格 式。 只 要 有 Java运 行 系 统 的 机 器 都 能 执 行 这 种 中 间 代 码。 现 在,Java运 行 系 统 有Solaris2.4(SPARC),Win32系 统(Windows95和Windows NT)等. Java源 程 序 被 编 译 成 一 种 高 层 次 的 与 机 器 无 关 的byte-code格 式 语 言, 这 种 语 言 被 设 计 在 虚 拟 机 上 运 行, 由 机 器 相 关 的 运 行 调 试 器 实 现 执 行。

    [6]    安 全

      Java的 安 全 性 可 从 两 个 方 面 得 到 保 证。 一 方 面, 在Java语 言 里, 象 指 针 和 释 放 内 存 等C++功 能 被 删 除, 避 免 了 非 法 内 存 操 作。 另 一 方 面, 当Java用 来 创 建 浏 览 器 时, 语 言 功 能 和 一些浏 览 器 本 身 提 供 的 功 能 结 合 起 来, 使 它 更 安 全。 Java语 言 在 你 的 机 器 上 执 行 前, 要 经 过 很 多 次 的 测 试。 它 经 过 代 码 校 验, 检 查 代 码 段 的 格 式, 检 测 指 针 操 作, 对 象 操 作 是 否 过 分 以 及 试 图 改 变 一 个 对 象 的 类 型。

    [7]    Byte-code校 验

      如 果byte-code通 过 代 码 校 验, 没 有 返 回 错 误, 我 们 可 知 道: 代 码 没 有 堆 栈 上 溢 出 和 下 溢 出 所 有 操 作 代 码 参 数 类 型 都 是 正 确 的 没 有 发 生 非 法 数 据 转 换, 如 将 整 数 转 换 成 指 针。 访 问 对 象 操 作 是 合 法 的

    [8]    类 装 载

      Class Loader通 过 将 本 机 类 与 网 络 资 源 类 的 名 称 分 开, 来 保 持 安 全 性。 因 为 调 入 类 时 总 要 经 过 检 查, 这 样 避 免 了 特 洛 伊 木 马 现 象 的 出 现。 从 网 络 上 下 载 的 类 被 调 进 一 个 与 源 相 关 的 私 有 的 名 字 域。 当 一 个 私 有 类 访 问 另 一 个 类 时,build-in(本 机 类)首 先 被 检 查, 然 后 检 查 相 关 的 类。 这 样 就 避 免 了 破 坏 本 机 类 情 况 的 出 现。

    [9]    可 移 植 的

      同 体 系 结 构 无 关 的 特 性 使 得Java应 用 程 序 可 以 在 配 备 了Java解 释 器 和 运 行 环 境 的 任 何 计 算 机 系 统 上 运 行, 这 成 为Java应 用 软 件 便 于 移 植 的 良 好 基础。 但 仅 仅 如 此 还 不 够。 如 果 基 本 数 据 类 型 设 计 依 赖 于 具 体 实 现, 也 将 为 程 序 的 移 植 带 来 很 大 不 便。 例 如 在Windows 3.1中 整 数(Integer)为16bits, 在Windows 95中 整 数 为32bits, 在DEC Alpha中 整 数 为64bits, 在Intel 486中 为32bits。 通 过 定 义 独 立 于 平 台 的 基 本 数 据 类 型 及 其 运 算,Java数 据 得 以 在 任 何 硬 件 平 台 上 保 持 一 致。Java语 言 的 基 本 数 据 类 型 及 其 表 示 方 式 如 下: byte 8-bit 二 进 制 补 码 short 16-bit 二 进 制 补 码 int 32-bit 二 进 制 补 码 long 64-bit 二 进 制 补 码 float 32-bit IEEE 754浮点 数 double 32-bit IEEE 754浮点 数 char 16-bit Unicode字 符。

      在 任 何Java解 释 器 中, 数 据 类 型 都 是 依 据 以 上 标 准 具 体 实 现 的。 因 为 几 乎 目 前 使 用 的 所 有CPU都 能 支 持 以 上 数 据 类 型、8~64位 整 数 格 式 的 补 码 运 算 和 单/双 精 度浮点 运 算。 Java编 译 器 本 身 就 是 用Java语 言 编 写 的。Java运 算 系 统 的 编 制 依 据POSIX方 便 移 植 的 限 制, 用ANSI C语 言 写 成。Java语 言 规 范 中 也 没 有 任 何"同 具 体 实 现 相 关"的 内 容。

    [10]  解 释 的

      Java解 释 器(运 行 系 统)能 直 接 运 行 目 标 代 码 指 令。 链 接 程 序 通 常 比 编 译 程 序 所 需 资 源 少, 所 以 程 序 员 可 以 在 创 建 源 程 序 上 花 上 更 多 的 时 间。

    [11]  高 性 能

      如 果 解 释 器 速 度 不 慢,Java可 以 在 运 行 时 直 接 将 目 标 代 码 翻 译 成 机 器 指 令。Sun用 直 接 解 释 器 一 秒 钟 内 可 调 用300,000个 过 程。 翻 译 目 标 代 码 的 速 度 与C/C++的 性 能 没 什 么 区 别。

    [12]  多 线 程

    Java提?copy;的 多 线 程 功 能 使 得 在 一 个 程 序 里 可 同 时 执 行 多 个 小 任 务。 线 程 - - 有 时 也 称 小 进 程 - - 是 一 个 大 进 程 里 分 出 来 的 小 的 独 立 的 进 程。 因 为Java实 现 的 多 线 程 技 术, 所 以 比C和C++更 键 壮。 多 线 程 带 来 的 更 大 的 好 处 是 更 好 的 交 互 性 能 和 实 时 控 制 性 能。 当 然 实 时 控 制 性 能 还 取 决 于 系 统 本 身(UNIX,Windows,Macintosh等), 在 开 发 难 易 程 度 和 性 能 上 都 比 单 线 程 要 好。 任 何 用 过 当 前 浏 览 器 的 人, 都 感 觉 为 调 一 副 图 片 而 等 待 是 一 件 很 烦 恼 的 事 情。 在Java里, 你 可 用 一 个 单 线 程 来 调 一 副 图 片, 而 你 可 以 访 问HTML里 的 其 它 信 息 而 不 必 等 它。

    [13]  动 态

      Java的 动 态 特 性 是 其 面 向 对 象 设 计 方 法 的 发 展。 它 允 许 程 序 动 态 地 装 入 运 行 过 程 中 所 需 要 的 类, 这 是C++语 言 进 行 面 向 对 象 程 序 设 计 所 无 法 实 现 的。 在C++程 序 设 计 过 程 中, 每 当 在 类 中 增 加 一 个 实 例 变 量 或 一 种 成 员 函 数 后, 引 用 该 类 的 所 有 子 类 都 必 须 重 新 编 译, 否 则 将 导 致 程 序 崩 溃。Java从 如 下 几 方 面 采 取 措施来 解 决 这 个 问 题。Java编 译 器 不 是 将 对 实 例 变 量 和 成 员 函 数 的 引 用 编 译 为 数 值 引 用, 而 是 将 符 号 引 用 信 息 在 字 节 码 中 保 存 下 传 递 给 解 释 器, 再 由 解 释 器 在 完 成 动 态 连 接 类 后, 将 符 号 引 用 信 息 转 换 为 数 值 偏 移 量。 这 样, 一 个 在 存 储 器 生 成 的 对 象 不 在 编 译 过 程 中 决 定, 而 是 延 迟 到 运 行 时 由 解 释 器 确 定 的。 这 样, 对 类 中 的 变 量 和 方 法 进 行 更 新 时 就 不 至 于 影 响 现 存 的 代 码。 解 释 执 行 字 节 码 时, 这 种 符 号 信 息 的 查 找 和 转 换 过 程 仅 在 一 个 新 的 名 字 出 现 时 才 进 行 一 次, 随 后 代 码 便 可 以 全 速 执 行。 在 运 行 时 确 定 引 用 的 好 处 是 可 以 使 用 已 被 更 新 的 类, 而 不 必 担 心 会 影 响 原 有 的 代 码。 如 果 程 序 连 接 了 网 络 中 另 一 系 统 中 的 某 一 类, 该 类 的 所 有 者 也 可 以 自 由 地 对 该 类 进 行 更 新, 而 不 会 使 任 何 引 用 该 类 的 程 序 崩 溃。 Java还 简 化 了 使 用 一 个 升 级 的 或 全 新 的 协 议 的 方 法。 如 果 你 的 系 统 运 行Java程 序 时 遇 到 了 不 知 怎 样 处 理 的 程 序, 没 关 系,Java能 自 动 下 载 你 所 需 要 的 功 能 程 序。

  • 相关阅读:
    UVA 10600 ACM Contest and Blackout(次小生成树)
    UVA 10369
    UVA Live 6437 Power Plant 最小生成树
    UVA 1151 Buy or Build MST(最小生成树)
    UVA 1395 Slim Span 最小生成树
    POJ 1679 The Unique MST 次小生成树
    POJ 1789 Truck History 最小生成树
    POJ 1258 Agri-Net 最小生成树
    ubuntu 用法
    ubuntu 搭建ftp服务器,可以通过浏览器访问,filezilla上传文件等功能
  • 原文地址:https://www.cnblogs.com/WLCYSYS/p/9704329.html
Copyright © 2011-2022 走看看