什么是Java以及Java的发展历程

news2024/9/27 5:42:59

Java是什么

搜索百度百科词条

Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 。
Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等

Java作为一门编程语言,吸收了C++语言的有点,同时拥有功能强大和易用,才使得Java的应用比较广泛;那么我们得了解一下Java语言诞生的过程

Java的发展历史(摘自Java发展史)

  • 1996年1月,Sun公司发布了Java的第一个开发工具包(JDK 1.0),这是Java发展历程中的重要里程碑,标志着Java成为一种独立的开发工具。9月,约8.3万个网页应用了Java技术来制作。10月,Sun公司发布了Java平台的第一个即时(JIT)编译器。
  • 1997年2月,JDK 1.1面世,在随后的3周时间里,达到了22万次的下载量。4月2日,Java One会议召开,参会者逾一万人,创当时全球同类会议规模之纪录。9月,Java Developer Connection社区成员超过10万。
  • 1998年12月8日,第二代Java平台的企业版J2EE发布。
  • 1999年6月,Sun公司发布了第二代Java平台(简称为Java2)的3个版本:J2ME(Java2 Micro Edition,Java2平台的微型版),应用于移动、无线及有限资源的环境;J2SE(Java 2 Standard Edition,Java 2平台的标准版),应用于桌面环境;J2EE(Java 2Enterprise Edition,Java 2平台的企业版),应用于基于Java的应用服务器。Java 2平台的发布,是Java发展过程中最重要的一个里程碑,标志着Java的应用开始普及。
  • 1999年4月27日,HotSpot虚拟机发布。HotSpot虚拟机发布时是作为JDK 1.2的附加程序提供的,后来它成为了JDK 1.3及之后所有版本的Sun JDK的默认虚拟机 。
  • 2000年5月,JDK1.3、JDK1.4和J2SE1.3相继发布,几周后其获得了Apple公司Mac OS X的工业标准的支持。
  • 2001年9月24日,J2EE1.3发布。
  • 2002年2月26日,J2SE1.4发布。自此Java的计算能力有了大幅提升,与J2SE1.3相比,其多了近62%的类和接口。在这些新特性当中,还提供了广泛的XML支持、安全套接字(Socket)支持(通过SSL与TLS协议)、全新的I/OAPI、正则表达式、日志与断言。
  • 2004年9月30日,J2SE1.5发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE 1.5更名为Java SE 5.0(内部版本号1.5.0),代号为“Tiger”,Tiger包含了从1996年发布1.0版本以来的最重大的更新,其中包括泛型支持、基本类型的自动装箱、改进的循环、枚举类型、格式化I/O及可变参数。
  • 2005年6月,在Java One大会上,Sun公司发布了Java SE 6。此时,Java的各种版本已经更名,已取消其中的数字2,如J2EE更名为JavaEE,J2SE更名为JavaSE,J2ME更名为JavaME。
  • 2006年11月13日,Java技术的发明者Sun公司宣布,将Java技术作为免费软件对外发布。Sun公司正式发布的有关Java平台标准版的第一批源代码,以及Java迷你版的可执行源代码。从2007年3月起,全世界所有的开发人员均可对Java源代码进行修改。
  • 2009年,甲骨文公司宣布收购Sun 。
  • 2010年,Java编程语言的共同创始人之一詹姆斯·高斯林从Oracle公司辞职。
  • 2011年,甲骨文公司举行了全球性的活动,以庆祝Java7的推出,随后Java7正式发布。
  • 2014年,甲骨文公司发布了Java8正式版。

因为上面文章只更新到了 2014 年 Java8 截止,但是到目前为止 Java已经更新到 20 了,所以,去官网上看看learn Java,如图所示,从Java8到Java9经历了3年,后续的版本都是6个月一个迭代

Java-release_cadence_21.png

上面的图,是从官网的新特性中找到的,如下:


Java新特性.png

Java Platform Evolution

文中主要介绍了
2014 年,Java带来了 Lambda expressions、Stream API、Optional等,使得Java8成为最受欢迎的版本,但是,也建议我们使用高版本的Java,因为有很多其他的新特性

Java的更新

Java8后,每年的更新情况,可以参考 Project Amber
Java10后,每个版本的更新也可以参考,如下连接,(修改指定的jdk版本,下面是10)

https://openjdk.org/projects/jdk/10/

也可以看JavaGuide的总结
https://javaguide.cn/java/new-features/java9.html

JEP 222: Java 命令行工具open in new window
JEP 261: 模块化系统open in new window
JEP 248:G1 成为默认垃圾回收器open in new window
JEP 193: 变量句柄open in new window
JEP 254:字符串存储结构优化open in new window

https://javaguide.cn/java/new-features/java10.html

JEP 286:局部变量类型推断open in new window
JEP 304:垃圾回收器接口open in new window
JEP 307:G1 并行 Full GCopen in new window
JEP 310:应用程序类数据共享(扩展 CDS 功能)open in new window
JEP 317:实验性的基于 Java 的 JIT 编译器open in new window

https://javaguide.cn/java/new-features/java11.html

JEP 321:HTTP Client 标准化open in new window
JEP 333:ZGC(可伸缩低延迟垃圾收集器)open in new window
JEP 323:Lambda 参数的局部变量语法open in new window
JEP 330:启动单文件源代码程序open in new window

https://javaguide.cn/java/new-features/java12-13.html
https://javaguide.cn/java/new-features/java14-15.html
https://javaguide.cn/java/new-features/java16.html
https://javaguide.cn/java/new-features/java17.html

JEP 306:Restore Always-Strict Floating-Point Semantics(恢复始终严格的浮点语义)open in new window
JEP 356:Enhanced Pseudo-Random Number Generators(增强的伪随机数生成器)open in new window
JEP 382:New macOS Rendering Pipeline(新的 macOS 渲染管道)open in new window
JEP 391:macOS/AArch64 Port(支持 macOS AArch64)open in new window
JEP 398:Deprecate the Applet API for Removal(删除已弃用的 Applet API)open in new window
JEP 403:Strongly Encapsulate JDK Internals(更强大的封装 JDK 内部元素)open in new window
JEP 406:Pattern Matching for switch (switch 的类型匹配)open in new window(预览)
JEP 407:Remove RMI Activation(删除远程方法调用激活机制)open in new window
JEP 409:Sealed Classes(密封类)open in new window(转正)
JEP 410:Remove the Experimental AOT and JIT Compiler(删除实验性的 AOT 和 JIT 编译器)open in new window
JEP 411:Deprecate the Security Manager for Removal(弃用安全管理器以进行删除)open in new window
JEP 412:Foreign Function & Memory API (外部函数和内存 API)open in new window(孵化)
JEP 414:Vector(向量) API open in new window(第二次孵化)
JEP 415:Context-Specific Deserialization Filters

https://javaguide.cn/java/new-features/java18.html
https://javaguide.cn/java/new-features/java19.html
https://javaguide.cn/java/new-features/java20.html

到目前为止,更新的版本号为20,其中除了 Java8,Java11Java17 都是两个长期支持的版本,也比较重要

jdk版本支持图.png

Java语言的特点

  1. 面向对象
    Java 是一种面向对象的语言,它对对象中的类、对象、继承、封装、多态、接口、包等均有很好的支持。为了简单起见,Java 只支持类之间的单继承,但是可以使用接口来实现多继承。使用 Java 语言开发程序,需要采用面向对象的思想设计程序和编写代码。

  2. 平台无关性
    平台无关性的具体表现在于,Java 是“一次编写,到处运行(Write Once,Run any Where)”的语言,因此采用 Java 语言编写的程序具有很好的可移植性,而保证这一点的正是 Java 的虚拟机机制。在引入虚拟机之后,Java 语言在不同的平台上运行不需要重新编译。
    Java 语言使用 Java 虚拟机机制屏蔽了具体平台的相关信息,使得 Java 语言编译的程序只需生成虚拟机上的目标代码,就可以在多种平台上不加修改地运行。

  3. 简单性
    Java 语言的语法与 C 语言和 C++ 语言很相近,使得很多程序员学起来很容易。对 Java 来说,它舍弃了很多 C++ 中难以理解的特性,如操作符的重载和多继承等,而且 Java 语言不使用指针,加入了垃圾回收机制,解决了程序员需要管理内存的问题,使编程变得更加简单。

  4. 解释执行
    Java 程序在 Java 平台运行时会被编译成字节码文件,然后可以在有 Java 环境的操作系统上运行。在运行文件时,Java 的解释器对这些字节码进行解释执行,执行过程中需要加入的类在连接阶段被载入到运行环境中。

  5. 多线程
    Java 语言是多线程的,这也是 Java 语言的一大特性,它必须由 Thread 类和它的子类来创建。Java 支持多个线程同时执行,并提供多线程之间的同步机制。任何一个线程都有自己的 run() 方法,要执行的方法就写在 run() 方法体内。

  6. 分布式
    Java 语言支持 Internet 应用的开发,在 Java 的基本应用编程接口中就有一个网络应用编程接口,它提供了网络应用编程的类库,包括 URL、URLConnection、Socket 等。Java 的 RIM 机制也是开发分布式应用的重要手段。

  7. 健壮性
    Java 的强类型机制、异常处理、垃圾回收机制等都是 Java 健壮性的重要保证。对指针的丢弃是 Java 的一大进步。另外,Java 的异常机制也是健壮性的一大体现。

  8. 高性能
    Java 的高性能主要是相对其他高级脚本语言来说的,随着 JIT(Just in Time)的发展,Java 的运行速度也越来越高。

  9. 安全性
    Java 通常被用在网络环境中,为此,Java 提供了一个安全机制以防止恶意代码的攻击。除了 Java 语言具有许多的安全特性以外,Java 还对通过网络下载的类增加一个安全防范机制,分配不同的名字空间以防替代本地的同名类,并包含安全管理机制。
    Java 语言的众多特性使其在众多的编程语言中占有较大的市场份额,Java 语言对对象的支持和强大的 API 使得编程工作变得更加容易和快捷,大大降低了程序的开发成本。Java 的“一次编写,到处执行”正是它吸引众多商家和编程人员的一大优势。

Java语言的缺点

1.性能
Java 需要在运行时进行解释,这使得它可以在每个操作系统上运行,但也使它的性能比C和C++等语言慢。另一方面,C++程序需要在每个操作系统上编译,直接编译成二进制,因此运行速度更快。

2.内存消耗
Java 程序在 Java 虚拟机之上运行,因此会消耗更多内存。

3.垃圾收集
Java 提供了程序员无法控制的自动垃圾收集。它不提供 delete() 和 free() 之类的方法来释放内存。

4.底层操作
Java 处理一些底层操作时可能不是很方便,有时候需要使用JNI等方式来调用底层的代码。同时,Java的安全模型也有一些限制,有时需要将某些需要高权限的操作委托给其他语言来完成



喜欢的朋友记得点赞、收藏、关注哦!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2088855.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

瞩“M”蓉城,驾趣“耍起” 全新BMW M5策马领衔,宝马集团13款新车闪耀成都车展

宝马秉持长期主义,以强大产品和创新体验,满足中国客户需求2024是BMW M大年,车型数量将扩至23款,几乎覆盖BMW所有细分市场全新BMW M5中国首秀,即将于今年年底上市 以“精简有道”融合性能美学与空气动力学,设…

实用好软-----电脑端 Kuvid工具 支持上千网站的视频下载软件

今天分享的这款软件支持很多网站视频下载 。全中文界面。操作比较简单。初步测试了下。下载B站视频操作方便 其他视频界面个别会解析错误。 软件主界面和相关设置界面 注意:设置中的自定义FFMPEG通常不需要开启,需要指定的路径是ffmpeg.exe的路径,不是所下载的安装…

2024高效获客转化指南 | 「人群模型」详解

营销进入“以人为本”的时代,小红书以其独特的UGC社区生态,在营销“人影响人”的传播链路中发挥着关键作用。 本期,千瓜就营销传播中“人”的研究展开探讨,通过解析人群模型、品牌案例,详细解读营销策略方法及应用&…

华为USG6625F设备ipsec隧道无IKE v1版本解决办法

新华为USG6625F防火墙,因需要和对端中心对接ipsec后发现无IKE V1版本,设备默认只有IKE v2版本,和对端对接隧道参数不一致,无法成功对接,因此需要下载相应的IKE v1插件后加载插件来解决该问题; USG6625F 版本…

Python自动化测试requests库深度详解

前言 发送HTTP请求 import requests# 登录的接口地址url http://............/login# 登录的参数params {"mobile_phone": 18300000000,"pwd": 12345678}# 请求头headers {X-Lemonban-Media-Type: lemonban.v2}# 发送登录请求# 请求类型为 Content-Typ…

《机器学习》 基于GANs构建数字图像生成器 探索深度学习世界

文章目录 引言生成对抗网络的基本原理生成对抗网络的数学表达生成对抗网络的应用生成对抗网络的挑战与优化生成对抗网络的实现示例结论:机器学习和ai技术的出现成为了C……SD……N 热榜的爹。 使用机器学习技术对热榜文章进行分析 引言 生成对抗网络(Ge…

Training language models to follow instructionswith human feedback

Abstract 将语言模型做得更大并不会自动提高它们遵循用户意图的能力。例如,大型语言模型可能会生成不真实、有毒或对用户不有帮助的输出。换句话说,这些模型并未与用户对齐(aligned)。本文展示了一种通过人类反馈来对齐语言模型与…

Kubernetes 上安装 Jenkins

安装 Helm curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash添加 Jenkins Helm 仓库 首先添加 Jenkins Helm 仓库 helm repo add jenkins https://charts.jenkins.io helm repo update安装 Jenkins 使用 Helm 安装 Jenkins 的最新版本&…

2024最新gewe开发微信机器人教程说明

简介:本文将指导你如何搭建一个微信机器人,通过接入gewe实现智能回复与聊天功能。我们将从基础设置开始,逐步讲解如何配置机器人,并通过实例展示其实际应用。 随着人工智能技术的不断发展,智能机器人已经成为我们日常…

RS®SMM100A 矢量信号发生器重新定义中档仪器

R&S SMM100A 矢量信号发生器 100 MHz至44 GHz 产品综述 R&SSMM100A 矢量信号发生器在 100 MHz 至 44 GHz 的频率范围内提供一流的射频特性。这款仪器覆盖现有无线标准所使用的 6 GHz 以下的频段、新定义的最高 7.125 GHz 的 5G NR FR1 和 Wi-Fi 6E 频段以及最高 44 …

C++竞赛初阶L1-14-第六单元-数组(31~33课)547: T456477 查找特定的值

题目内容 在一个序列(下标从 0 开始)中查找一个给定的值,输出第一次出现的位置。 输入格式 第一行包含一个正整数 n,表示序列中元素个数。1≤n≤10000。 第二行包含 n 个整数,依次给出序列的每个元素,相…

【微信小程序】SpringBoot集成微信小程序(多小程序集成)

SpringBoot集成微信小程序 前言一、前置工作1、获取appId和appSecret核心参数 二、SpringBoot集成微信小程序1、引入pom依赖2、yml配置3、java代码文件3.1、Properties 配置类3.2 Configuration 服务类 4、使用示例4.1、获取登录后的session信息:openId4.2、获取当前…

提升你的校招简历:推荐高质量C++项目示例!

Linux C/C开发(后端/音视频/游戏/嵌入式/高性能网络/存储/基础架构/安全)、QT开发、学习资料、教学视频和学习路线图,↓↓↓↓↓↓见下面文章底部点击学习资料领取↓↓↓↓↓↓ TinyTetris TinyTetris 是一个用不到 1024 字节的 C 语言代码编…

SWAP模型入门到精通:模拟土壤水分动态、溶质运输、土壤温度以及作物生长等过程

目录 专题一 SWAP模型介绍及数据要求 专题二 数据制备与模型运行 专题三 基于R模型敏感性分析与贝叶斯优化 专题四 基于Fortran源代码分析 专题五 气候数据降尺度与变化影响分析 专题六 AI大语言模型在建模中的应用 更多应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作…

泽众P-One如何测试https接口性能问题

P-One是泽众软件自主研发的一套一站式性能测试平台,集管理、设计、压测、监控以及分析于一体的全方位性能测试解决方案,有效提升了性能测试的技术能力和效率,降低了测试门槛和成本,同时提升了软件产品质量。本文将详细介绍如何使用…

Nuxt 项目实战 - 16:利用CDN+OSS给网站全面提速

背景 我面试过一些前端同学,同时也看到网上很多前端同学说可以利用CDN加速,提高网站的访问速度,具体如何搞?具体如何配置?估计很多前端都是不知道的,一方面权限所限,另一方面可能只是知道可以利…

Substance 3D Stager for Mac/Win:高效三维场景设计利器

Substance 3D Stager是Adobe推出的一款专为Mac和Windows用户设计的三维场景设计和渲染软件,它以其高效、直观的特点,在数字艺术、游戏开发、影视特效等领域赢得了广泛的认可。 核心功能 直观的操作界面:Substance 3D Stager提供了优秀的视觉…

智慧交通算法一体机助力城市交通智能管理,让违规行为无处遁形

背景分析: 随着社会的进步和科技的不断发展,互联网技术和AI视觉分析技术日益成熟,为传统交通监控领域带来了新的发展机遇。AI视觉分析技术的引入,不仅提升了交通监控的智能化和自动化水平,还显著减轻了交管部门的工作…

数据分析报告练习作业

该数据集为日本1960年到2022年间的基建领域的投资数据,包含以下特征: 年份 价值 总计 建筑总计 住宅建筑 政府住宅建筑 私人住宅建筑 非住宅建筑 政府非住宅建筑 私人非住宅建筑 私人非住宅建筑(矿业和工业) 私人非住宅建筑&…

使用HTTP代理注意的点

“在网络世界中,HTTP代理扮演着桥梁的角色,帮助用户匿名访问网站、加速网页加载、绕过地区限制等。然而,不当或不安全地使用HTTP代理也可能带来一系列问题。以下是在使用HTTP代理时需要注意的几个关键点。” 一、选择可靠的代理服务商 首先&…