Java 简介

2023-11-08

前言

既然要学习一门技术,那么就先来了解下它的历史,我们为什么要使用它,以及我们能用它来干啥。

历史背景

1990 年代初,Sun 公司的詹姆斯·高斯林等人为了实现电视机、电话、闹钟等家用电器的控制和通信,开发了一套用于设置在家用电器等小型系统中的编程语言。在当时,这门语言被命名为 Oka。但由于市场需求不高,所以该计划被逐渐放弃。

随着 1990 年代互联网的发展,Sun 公司发现 Oka 语言在互联网中的应用前景广泛。于是决定对 Oka 进行改造,并在 1995 年 5 月以 Java 的名义正式发布。

随着互联网的迅猛发展,Java 也得以逐渐成为重要的网络编程语言,詹姆斯·高斯林也被大家公认为 Java 之父。

到了 2009 年, Sun 公司被 Oracle 公司所收购,自此 Java 成为 Oracle 公司的一大产品直至今日。

以下是截止到本文写作时间(2022 年 7 月 23 日)Java 的历史年表,累计经过了 18 次主要版本更新,目前来到了 Java SE 18。而 Java SE 19 早期预览版也已经流出,根据官方给出的发布时间表,大概会在 9 月份发布 Java SE 19 的 GA 版本。不过虽然 Java 已经经历了这么多版本的更新,但国内目前用的最多的应该还是 Java 1.8 版本。而处于对稳定性的考虑,企业开发更喜欢 LTS 版本,这也是为什么至今 Java 1.8 还占有如此高的市场比例。

版本 发布日期 主要事件
JDK Beta 1995 Java 语言发布,用 Java 实现的浏览器和 Java Applet 被大量应用
JDK 1.0 1996 年 1 月 奠定了JDK、JRE、JVM 的体系结构
JDK 1.1 1997 年 2 月 加入 JIT,提升 JDK 效率
J2SE 1.2 1998 年 12 月 确立 J2SE、J2EE、J2ME 产品结构
J2SE 1.3 2000 年 5 月 内置 HotSpot JVM
J2SE 1.4 2002 年 2 月 XML 处理、断言、支持正则表达式
J2SE 5.0 2004 年 9 月 静态导入、泛型、for-each 循环、自动拆,装箱、枚举、可变参数
Java SE 6 2006 年 12 月 提供动态语言支持、同步垃圾回收
Java SE 7 2011 年 7 月 字符串的switch语句、多异常捕抓
Java SE 8 (LTS) 2014 年 3 月 Lambda表达式
Java SE 9 2017 年 9 月 轻量级 json API、垃圾收集机制更新
Java SE 10 2018 年 3 月 局部变量类型推断,Java 后续版本快速迭代更新
Java SE 11 (LTS) 2018 年 9 月 常用类增强,Java 11 是继 Java 8 之后的首个长期支持本版
Java SE 12 2019 年 3 月 switch 表达式增强
Java SE 13 2019 年 9 月 文本块支持
Java SE 14 2020 年 3 月 instanceof 支持模式匹配
Java SE 15 2020 年 9 月 EdDSA 数字签名算法、 密封类、隐藏类
Java SE 16 2021 年 3 月 启用 C++ 14 语言特性、Vector API
Java SE 17 (LTS) 2021 年 9 月 恢复总是严格的浮点语义、增强型伪随机数生成器
Java SE 18 2022年 3月 默认 UTF-8 编码、代码片段、简单的网络服务器

为什么使用 Java

既然编程语言有那么多,那我们为什么要使用 Java 语言呢?以下就来看看 Java 被广泛使用的几个原因。

  1. 世界范围内流行,国内使用最为广泛的编程语言之一。

以下是截止 2022 年 7 月 TIOBE 统计的编程语言排行榜,可以看到 Java 处于前三的位置。而从历年编程语言所占市场份额趋势图也可以看出,Java 虽然没有一直独占鳌头,但绝大数时间都是占据领先地位。


  1. 移植性高

由于 Java 中 JVM 的特性,所以能够做到一次编译,随处运行,其移植性也就更高。

  1. 开发社区完善

社区完善也是 Java 为什么使用多的原因,各种封装 API,比起 C、C++ 语言使用起来更加方便。虽然 Python 的封装程度更高,但是其效率比起 Java 却打了折扣。毕竟封装程度和效率是成反比的,Java 兼具了效率高和使用方便的特点,所以更受人们青睐。

Java 能做什么

Java 应用广泛,在我们日常中就能经常见到由 Java 所开发的程序。常见的的应用应用领域如下:

  1. 桌面 GUI 应用开发
  2. 服务器系统
  3. 企业级应用开发
  4. 大数据开发
  5. 移动应用开发
  6. 游戏开发
  7. ……

Java 技术体系

根据传统意义上 Sun 官方定义, Java 技术体系的组成主要就是我们常说的 JDK,即以下三部分:

  1. Java 程序设计语言
  2. Java 虚拟机
  3. Java API 类库

同时,Java 技术体系又可以主要分为以下 3 个平台。

  1. Java SE

Java Standard Edition,即 Java 标准版。主要是 Java 技术的核心和基础,要想学好 Java,那么首先你得掌握好这部分。主要运行在桌面级应用,如 Windows 应用程序。

  1. Java EE

Java Enterprise Editon,即 Java 企业版。从它的名字就不难看出,这是 Java 针对企业级应用开发所提供的一套解决方案,主要用于架设高性能企业网站。

  1. Java ME

Java Micro Edition,即 Java 小型版。主要是 Java 针对移动设备应用所提供的一套解决方案,主要运行在手机、pad 等移动端。

总结

本文主要从 Java 历史背景、选择 Java 的理由、Java 能做什么、Java 技术体系等 4 方面对 Java 语言做了一个简单介绍。接下来的文章我们就来看看,如何搭建 Java 的开发环境以及实现一个简单的入门程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 简介 的相关文章

随机推荐

  • 项目启动报错信息:java.lang.NoClassDefFoundError: org/apache/commons/el/Logger

    注 仅供参考 个人运行项目时遇到的问题和解决方案 希望可以给大家带来一丢思路 并非普适性 问题描述 启动tomcat时报错 项目未运行成功 具体报错 十月 18 2021 9 10 11 下午 org apache catalina cor
  • Fmask算法——影像云检测算法

    总结Fmask算法的学习资料 1 经典论文 1 Object based cloud and cloud shadow detection in Landsat imagery 2 Improved cloud and cloud shad
  • 如何建立异地容灾备份体系

    GB T22239 2019 信息安全技术 网络安全等级保护基本要求 即等保2 0 已于2019 12 1 正式实施 其中第二级安全通用要求 应提供异地数据备份功能 利用通信网络能将重要数据定时批量传送至备用场地 第四级安全通用要求 应建立
  • Matlab画图 常用功能及属性设置脚本

    一 plot使用脚本 常规设置 1 线型 颜色 宽度 2 legend 字体 字号 位置 3 label 字体 字号 4 title 字体 字号 加粗 5 gca 边框宽度 坐标轴字体 坐标轴范围 网格 x linspace 0 2 pi
  • 万字长文详解特斯拉自动驾驶体系(感知/规控/标注/仿真)

    作者 和君 编辑 禾隐记 点击下方卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 全栈算法 技术交流群 汽车革命的上半场是电动化 下半场是智能化 电动化只是改变了汽车的动力供给方式 并没有改变汽车的性质
  • ElasticSearch系列十二:掌握ES使用Java API

    一 Java连接ElasticSearch6 x版本 可整合到spring中
  • 洛谷 P1885 Moo

    P1885 Moo 题目描述 奶牛Bessie最近在学习字符串操作 它用如下的规则逐一的构造出新的字符串 S 0 moo S 1 S 0 m ooo S 0 moo m ooo moo moomooomoo S 2 S 1 m oooo S
  • AcWing 1381. 阶乘

    题目 N 的阶乘 记作 N 是指从 1 到 N 包括 1 和 N 的所有整数的乘积 阶乘运算的结果往往都非常的大 现在 给定数字 N 请你求出 N 的最右边的非零数字是多少 例如 5 1 2 3 4 5 120 所以 5 的最右边的非零数字
  • 安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作

    文章目录 JS原生开发 文件上传 变量 对象 函数 事件 JS导入库开发 登录验证 JQuery库 Ajax技术 JS导入库开发 编码加密 逆向调试 JS原生开发 文件上传 变量 对象 函数 事件 1 布置前端页面 2 JS获取提交数据 3
  • 超详细Hyperledger Fabric2.3.3开发教程

    最近一直在总结Hyperledger Fabric的开发教程 主要包括 1 什么是Hyperledger 区块链 Hyperledger Fabric 01 超级账本介绍 2 Fabric 2 3 3安装教程 区块链 Hyperledger
  • LeetCode 15. 三数之和

    文章目录 1 排序 双指针 2 对上面代码加剪枝 题目链接 https leetcode cn problems 3sum 1 排序 双指针 思路如下 对数组进行排序 枚举第一个数 n u m s i
  • Vue的生命周期

    推荐一些文章 超详细vue生命周期解析 详解 vue生命周期 vue之生命周期 详细 vue生命周期钩子函数详解 Vue生命周期 11个钩子函数
  • 流媒体传输协议详解之---RTSP认证

    Rtsp认证主要分为两种 基本认证 basic authentication 和摘要认证 digest authentication 基本认证是http 1 0提出的认证方案 其消息传输不经过加密转换因此存在严重的安全隐患 摘要认证是htt
  • 刷脸支付大战的气氛弥漫各处

    人工智能 关于移动支付 这些或新或老的名词 再一次随着产品的落地冲入人们的眼前 从外观上看 这台机器不过iPad大小 似乎平平无奇 但实际使用起来却异常轻松 在香港国际机场1号客运大厅Duty Zero免税店里 智东西记者看到 顾客只要把脸
  • 评估计算recall、precision、AP、F1、mAP(PyTorch-YOLOv3代码解析二)

    目标检测评估计算 utils py 代码github地址 https github com eriklindernoren PyTorch YOLOv3 1 检测的评估函数 reference https github com erikli
  • C++ String类编写

    1 h文件 ifndef STR H define STR H include
  • angular-ui-select 支持搜索的 下拉选择框 的使用

    github地址 https github com angular ui ui select 默认支持所有唯一性字段的匹配 可以配置只有一种 通过channelList filter description select search 或者
  • 线性回归模型及K-score归一化方法Python3实现杂文

    Python3 线性回归模型及K score归一化方法实现 前言 本文是博主参考吴恩达的机器学习课程记录的杂文笔记 主要内容是线性回归的代码实现和K score归一化方法的代码实现 以及线性回归的主要公式内容 鉴于博主水平 如有错误 请帮忙
  • 基于CentOS7.6编译Redis6.0.4 ,gcc版本过低出现:make: *** [all] Error 2问题

    一 CentOS7 6 环境编译Redis6 0 4 编译命令 异常 二 问题描述 原因是Linux系统gcc版本过低 yum安装的gcc是4 8 5的 需要升级gcc 如下 yum y install centos release scl
  • Java 简介

    前言 既然要学习一门技术 那么就先来了解下它的历史 我们为什么要使用它 以及我们能用它来干啥 历史背景 1990 年代初 Sun 公司的詹姆斯 高斯林等人为了实现电视机 电话 闹钟等家用电器的控制和通信 开发了一套用于设置在家用电器等小型系