【JAVA】十分钟带你了解java的前世今生

news2024/12/28 18:23:48

个人主页:【😊个人主页】
系列专栏:【初始JAVA】

在这里插入图片描述


文章目录

  • 前言
  • JAVA介绍
  • 诞生🔬
  • 名字与图标🤖
  • 发展🛩️
  • 未来🪄


前言

玩过我的世界的朋友想必对JAVA以及它的图标都很熟悉,在游戏开始画面停留在此时,我们可能会好奇,“它”有什么作用,“它”为什么会被称之为“JAVA”,它为什么又“长”成这样?
在这里插入图片描述


JAVA介绍

Java是一种编程语言,被特意设计用于互联网的分布式环境。Java具有类似于C++语言的“形式和感觉”,但它要比C++语言更易于使用,而且在编程时彻底采用了一种“以对象为导向”的方式。

Java 是一个通用术语,用于表示 Java 软件及其组件,包括“Java 运行时环境 (JRE)”、“Java 虚拟机 (JVM)”以及“插件”。


诞生🔬

20世纪90年代,单片式计算机系统诞生,单片式计算机系统不仅廉价,而且功能强大,使用它可以大幅度提升消费性电子产品的智能化程度。SUN公司为了抢占市场先机, 在1991年成立了一个由詹姆斯.高斯林(James Go sig) 领导, 名为"Green"项目小组, 目的是开发一种能够在各种消费性电子产品上运行的程序架构。当时的C++就成首选,但C++过于复杂和庞大,再加上由于消费电子产品所采用的嵌入式处理器芯片的种类繁杂,需要让编写的程序跨平台运行,假如用C++编写的话对程序的跨平台运行不友好。最后项目小组决定:既不用C++编写,也不开发新的编程语言,而是对C++进行改造:去除了C++复杂的指针和内存管理,并结合嵌入式系统的实时性要求,最终在1992年,他们开发了一种名为“Oak”的面向对象语言。当他们在向硬件生产商进行演示的时候,硬件生产商对此并不感冒, OaK语言因为缺乏硬件的支持而无法进入市场。
1994年, 项目小组看到了浏览器在未来的发展前景,于是决定将OaK应用于万维网。1995年, 他们用OaK语言研发了一种能将小程序嵌入到网页中执行的技术——Applet, 由于Applet不仅能嵌入网页, 还可以随网页在网络上进行传输, 这让无数的程序员看到了OaK这门语言,后来OaK正式更名为Java标志着Java语言的正式诞生。几个月后,网上超过10万人下载Java语言!

在这里插入图片描述


名字与图标🤖

承接前言我们提出的问题JAVA的名字与图标时怎么来的?

Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。Java语言中的许多库类名称,多与咖啡有关,如JavaBeans(咖啡豆)、NetBeans(网络豆)以及ObjectBeans (对象豆)等等。SUN和JAVA的标识也正是一杯正冒着热气的咖啡。
据James Gosling回忆,最初这个为TV机顶盒所设计的语言在Sun内部一直称为Green项目。我们的新语言需要一个名字。Gosling注意到自己办公室外一棵茂密的橡树Oak,这是一种在硅谷很常见的树。所以他将这个新语言命名为Oak。但Oak是另外一个注册公司的名字。这个名字不可能再用了。
在命名征集会上,大家提出了很多名字。最后按大家的评选次序,将十几个名字排列成表,上报给商标律师。排在第一位的是Silk(丝绸)。尽管大家都喜欢这个名字,但遭到James Gosling的坚决反对。排在第二和第三的都没有通过律师这一关。只有排在第四位的名字、得到了所有人的认可和律师的通过,这个名字就是Java。
10多年来,Java就像爪哇咖啡一样誉满全球,成为实至名归的企业级应用平台的霸主。而Java语言也如同咖啡一般醇香动人。


发展🛩️

1996年,JDK1.0发布,标志着java成为一种独立的开发工具。1
1997年2月,SUN公司推出了JDK1.1在推出后3周时间里,达到了近22万次的下载量。4月2日,首届JavaOne大会在美国旧金山召开2.
1998年12月8日,JDK1.2第二代Java平台的企业版J2EE发布。
1999年6月 ,Sun公司把Java体系分为三个方向.3随着供应商的不同, Java的API也分为三大类.4Java 2平台的发布,是Java发展过程中最重要的一个里程碑, 标志着Java的应用开始普及。
1999年4月27日,HotSpot虚拟机5发布。
2000年5月,JDK1.3、JDK1.4和J2SE1.3相继发布,J2SE1.3是对J2SE1.2的补充和扩展, 从应用领域的角度分析, JavaSE1.3已经涵盖了数据库、WEB、网络、图形、多媒体、电话、影像等大部分的信息技术领域。
2002年2月26日,J2SE1.4发布。与J2SE1.3相比,多了近62%的类和接口。在这些新特性当中, 还提供了广泛的XML支持、安全套接字(Socket) 支持(通过SSL与TLS协议) 、全新的I/OAPI、正则表达式、日志与断言。
2004年9月30日,J2SE1.5发布成为Java语言发展史上的又一里程碑。为了表示该版本的重要性, J2SE1.5更名为JavaSE5.0(内部版本号1.5.0) .JavaSE5.0包含了从1996年发布1.0版本以来的最重大的更新,其中包括泛型支持、基本类型的自动装箱、改进的循环、枚举类型、格式化I/O及可变参数。
2005年6月, 在JavaOne大会上,Sun公司发布了JavaSE6。此时,Java的各种版本已经更名, 已取消其中的数字2, 如J2EE更名为JavaEE,J2SE更名为JavaSE,J2ME更名为JavaME。
2011年7月28日,收购Sun公司的Oracle发布了JavaSE7,引入了二进制整数、支持字符串的switch语句、棱形语法、多异常捕抓、自动关闭资源的try语言等新特性。
2014年3月18日,Oracle公司发布JavaSE8,这次版本升级为Java带来了全新的Lambda表达式、流式编程等大量新特性,这些新特性使得Java变得更加强大。
2017年9月22日,Oracle公司发布JavaSE9, 这次版本升级强化了Java的模块化系统, 让Java语言更轻量化, 且采用了更高效、更智能的GI垃圾回收器,并在核心类库上进行大量更新,可进一步简化编程。
2018年3月21日,JavaSE 10发布,Java 10版本带来了很多新特性, 其中最备受广大开发者关注的莫过于局部变量类型推断。此外,还包垃圾收集器改善、GC改进、性能提升、线程管控等新特性。
2018年9月26日,JavaSE 11发布.这是Java大版本周期变化后的第一个长期支持版本(LTS版本持续支持到2026年9月)。Java 11带来了ZGC、HttpClient等重要特性,一共包含17个JEP(JDKEnhancementProposals,JDK增强提案)。
2019年3月20日,JavaSE 12发布。Java 12是短期支持版本,可在下一个版本发布之前获得Oracle的商业支持。
2019年9月23日,JavaSE 13发布,此版本中添加了“文本块”。文本块是一个多行字符串文字,避免对大多数转义序列的需要,以可预测的方式自动格式化字符串,并在需要时让开发人员控制格式。


未来🪄

作为世界上最流行的编程语言(之一),因为其一次编写即可随处运行(WORA)功能,可用于任何平台(如Mac、Windows、Android、iOS等)跨平台(从大型机数据中心到智能手机)的可移植性而受到认可。目前,有超过30亿台设备运行用Java构建的应用程序。Java广泛应用于web和应用程序开发以及大数据开发,也用于一些流行网站的后端,它还广泛应用于数百种应用中。一些新的Java框架,如Spring、Struts和Hibernate也非常流行。Java是一种较为复杂的编程语言,但对具有Java编码技能的有经验的开发人员的需求很高,有数据显示,全球范围的Java开发人员的平均年收入约为109,225美元(RMB约740,000元)。根据国内的招聘网站的数据显示,Java开发工程师的月平均工资约为25,053元,最高能达到79,900元。

在这里插入图片描述


  1. JDK1.0的代表性技术有:Java虑拟机、Applet、AWT等。 ↩︎

  2. 参加会议超过一万人,创造了当时全球同类会议规模最高的纪录。社区成员超过10万人,同年还有10个最主要的操作系统供应商正式声明将在他们的产品中使用Java。JDK1.1的代表性技术有JDBC、JavaBeans、RMI、JAR文件格式、Java语法中的内部类和反射。 ↩︎

  3. J2ME(Java 2 Micro Edition, Java 2平台的微型版) 应用于移动、无线及有限资源的环境:J2SE(Java 2 Standard Edition, Java 2平台的标准版),应用于桌面环境;J2EE(Java 2 Enterprise Edition, Java 2平台的企业版),应用于基于Java的应用服务器。 ↩︎

  4. JavaCoreAPI:Java核心类库;Java Optional API:对之前API的扩充;特殊API:由特殊厂商或组织提供的API。JKD1.2的代表性技术有:Swing、Java IDL、EJB、Java Plug-in等, 在API文档中, 添加了strict fp关键字和Collections集合类。 ↩︎

  5. HotSpot是由一家“Longview Technologies”的小公司开发的,后来被SUN公司收购。HotSpot虚拟机发布时是作为JDK1.2的附加程序提供的, 后来它成为了JDK1.3及之后所有版本的Sun JDK的默认虚拟机。 ↩︎

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

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

相关文章

Java程序所在机器性能监控

Java程序所在机器性能监控 背景 问题单:程序故障(OOM、网络不通、操作卡顿)问题单:服务连接不上需求 1、监控本地机器性能 告警日志UI2、监控服务接口服务 告警日志UI方案 固定间隔获取机器网络CPU内存数据设置阈值,告…

自定义starter实现接口或方法限流功能

本文的思路是利用AOP技术自定义注解实现对特定的方法或接口进行限流。目前通过查阅相关资料,整理出三种类型限流方法,分别为基于guava限流实现、基于sentinel限流实现、基于Semaphore的实现。 一、限流常用的算法 1.1令牌桶算法 令牌桶算法是目前应用…

OpenCV(视频加载与摄像头使用)

目录 1、VideoCapture类 2、视频属性get() 3、视屏文件保存 1、VideoCapture类 2、视频属性get() 3、视屏文件保存 //视频的读取保存 int test3() {VideoCapture video;//video.open("F:/testMap/lolTFT.mp4");//读取视频video.open(0);//读取摄像头if (!video.i…

linux docker安装

一、Linux安装docker 1.1 前提 要求Linux内核(kernel) 版本大于等于3.8。(kernel version >3.8)。 查看当前系统内核版本 uname -a | awk {split($3,arr,"-");print arr[1]} 1.2 linux 安装docker Centos安装doc…

【数据结构与算法】7、队列(Queue)的实现【用栈实现队列】

目录 一、队列介绍二、使用 LinkedList 实现队列三、LeetCode:用【栈】实现队列(1) 老师讲之前我自己的实现(Correct)(2) 实现思路(3) 代码实现 四、jdk 的 Queue五、双端队列(Deque)六、循环队列(1) 分析(2) 入队(3) …

Linux--运行指令的本质

本质: ①找到它 which的作用就是找到它 ②运行它 示例: ①告诉系统要运行的指令,然后系统去查找它的路径并运行它 ②自己告诉系统自己要运行的路径,然后系统运行它 注意:a.out不能运行,而./a.out能运行…

MES是如何帮助企业提高生产效率的

大多数提高制造生产效率的系统都是从详细分析公司的制造流程和运营开始的。这样做的目的是是为了消除浪费的不增值的流程,将有价值的流程系统化,实现生产自动化并增强增值操作。 在自动化流程方面,实施制造执行系统(MES&#xff…

HTML5 游戏开发实战 | 俄罗斯方块

俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事。这款游戏看似简单但却变化无穷,游戏过程仅需要玩家将不断下落的各种形状的方块移动、翻转,如果某一行被方块充满了&…

发送邮箱验证码【spring boot】

⭐前言⭐ ※※※大家好!我是同学〖森〗,一名计算机爱好者,今天让我们进入学习模式。若有错误,请多多指教。更多有趣的代码请移步Gitee 👍 点赞 ⭐ 收藏 📝留言 都是我创作的最大的动力! 1. 思维…

Redis6之穿透、击穿、雪崩

大量的高并发的请求打在Redis上,但是发现Redis中并没有请求的数据,redis的命令率降低,所以这些请求就只能直接打在DB(数据库服务器)上,在大量的高并发的请求下就会导致DB直接卡死、宕机。 缓存穿透 当客户端…

一例Phorpiex僵尸网络样本分析

本文主要分析Phorpiex僵尸网络的一个变种,该样本通常NSIS打包,能够检测虚拟机和沙箱。病毒本体伪装为一个文件夹,通过U盘来传播,会隐藏系统中各盘符根目录下的文件夹,创建同名的lnk文件,诱导用户点击。 病…

TF卡/U盘系统备份

Jetson nano使用TF卡/U盘来装载系统,如果TF卡/U盘丢失或者损坏,那么Jetson nano上的数据都会丢失,所以一定要备份好TF卡/U盘。这篇文章可以帮你备份你的Jetson nano系统。主要内容为备份TF卡/U盘,制作Jetson nano系统镜像以及在需…

Java——《面试题——ElasticSearch篇》

目录 1、谈谈分词与倒排索引的原理 2、说说分段存储的思想 3、谈谈你对段合并的策略思想的认识 4、了解文本相似度 TF-IDF吗 5、能说说ElasticSearch 写索引的逻辑吗? 6、熟悉ElasticSearch 集群中搜索数据的过程吗? 7、了解ElasticSearch 深翻页的…

vsCode 创建新java项目(创建一个新java项目测试方法)

VSCODE环境配置-java之项目建立,非常适合刚准备使用VSCODE开发JAVA的人_vscode创建java项目_rainmenzhao的博客-CSDN博客 1 按 ctrl shift p 2 输入 create Java project 3 选 no build tools 4 选择 一个文件夹 存放 之后要 新建的文件 5 选完之后 自动返回主页…

获得Jolt 大奖的《持续交付》作者David Farley又一新作《现代软件工程》

戴维 法利 (David Farley) 是持续交付的先驱、思想领袖, 也是持续交付、 DevOps、 测试驱动开发和软件开发领域的专家。 从现代计算的早期开始,戴维曾担任过程序员、软件工程师、系统架构师和成功团 队的领导者,他掌握了计算机和软件开发的基…

ES基本操作(postman篇)

关系型数据库 -> Databases(库) -> Tables(表) -> Rows(行) -> Columns(列)。Elasticsearch -> Indeces(索引) -> Types(类型) -> Documents(文档) -> Fields(属性)。 需要注意的是:type的概念在es7.0之后已经删除了。 以下仅做刚入门学习…

矩阵对角线元素的和:揭秘数学之美,解密矩阵的隐秘密码

本篇博客会讲解力扣“1572. 矩阵对角线元素的和”的解题思路,这是题目链接。 本题的思路是:主对角线的下标满足i j,副对角线的下标满足i j size - 1,故只需要使用i遍历每一行,把(i, i)和(i, size - i - 1)的元素求和…

探索 Spring Boot 项目全过程

文章目录 🎇前言1.Spring Boot 所需环境2.Spring Boot 项目创建2.1 安装插件2.2 创建新项目2.3 项目属性配置2.4添加依赖2.4 修改项目名称2.5 添加框架支持2.6 目录介绍 3.判断Spring Boot 创建项目是否成功🎆总结 🎇前言 在 Java 这个圈子&…

1. Except

文章目录 Except前言Except 语法Except 使用举例结合其他关键字使用EXCEPT with BETWEEN operatorExcept with IN operatorEXCEPT with LIKE operator 文章参考 Except 前言 SQL中,EXCEPT 操作用于检索存在于第一个表中的唯一记录,而不是两个表中共有的…

python3GUI--网速内存小工具By:PyQt5(附源码)

文章目录 一.前言二.预览1.主界面2.动图演示3.内存详细信息查看4.自定义界面 三.源代码1.tool_god_GUI.py2.tool_god_ui.py3.engine.py4.CWidgets.py 四.总结五.参考 一.前言 本次使用PyQt5进行开发一款网…