1.忆往昔—Java发展史

        在编程世界的远古时代,C语言和C++统治着大地,但它们复杂且难以驾驭。1995年5月23日,Java 1.0正式发布,它像一把神奇的钥匙,打开了“一次编写,到处运行”的大门。

早在1991年Java就已经初见雏形,不过那个时候Java并不叫Java,而叫Oak,一个朴实无华的名字。你以为是因为Java这个名字更好听才改的吗,其实因为Oak这个名字已经被抢先使用了,并且注册了商标。毕竟是注入了很多的心血,詹姆斯·高斯林(Java创始人)怎么也得给Java取个易记好听的名字,可想破脑袋也没想出来。有一天,詹姆斯·高斯林和他的团队成员正喝着来自一家名为Java咖啡店调制的咖啡这种咖啡生产于印度尼西亚爪哇岛,团队成员顺势提出了Java这个名字,Java在当时也象征着优质和流行,这也正是对Java未来发展的期望,经过多次头脑风暴,最终决定取名为Java。不知道这种咖啡还有没有得卖,香味如何。

图1-1 爪洼岛

        1995年5月23日,Java 1.0正式发布,虽然在当时没有引起太大的轰动,但这一天却标志着Java及其平台的正式诞生,Java的“一次编写,到处运行”理念,为互联网的发展奠定了坚实的基础。这算是一个低调的起点吧。随着时间的推移,Java逐渐展现出其强大的生命力和广泛的应用前景。

        1996年,Java 1.1版本发布,引入了内部类、Java Beans等新特性,进一步增强了语言的功能性和灵活性。同年,HotSpot虚拟机的概念被提出,这是Java性能优化的一个重要里程碑,它通过即时编译技术(JIT)显著提高了Java程序的执行效率。

        1998年,Java 2平台发布,标志着Java进入了一个新的发展阶段。Java 2分为三个版本,俗称三剑客:标准版(J2SE)、企业版(J2EE)和微型版(J2ME),分别针对不同的应用场景进行了优化。这一时期,Java不仅在桌面应用中占据一席之地,还在服务器端和企业级应用中大放异彩,成为构建大型企业系统的首选技术之一。

        进入21世纪,Java继续保持着快速发展的步伐。2004年,Java SE 5发布,引入了泛型、增强的for循环、自动装箱/拆箱等现代编程语言的特性,使得Java代码更加简洁和安全。2006年,Java SE 6发布,增加了脚本语言支持、轻量级JSON处理库等实用功能。

        2009年,Oracle公司收购了Sun Microsystems,成为了Java的新东家。此后,Java进入了一个新阶段的发展。2011年,Java 7发布,带来了Fork/Join框架、G1垃圾收集器等创新技术。

        2014年,Java 8发布,这是Java历史上的一个重要转折点,Lambda表达式、Stream API、新的日期时间API等新特性的加入,让Java在函数式编程领域焕发新生。

        Java已经发展成为一个成熟、稳定且功能强大的编程语言。它不仅在传统的企业级应用中继续发挥着重要作用,还在云计算、大数据、物联网等新兴领域展现出强大的生命力。从最初的Oak到现在的Java,这一路走来,Java不断进化和完善,始终站在技术的前沿,引领着软件开发的未来。

        上面很多专业名词你或许听起来像天书,那是因为很多内容你没有学到,此刻你也不必去深究。Java的魔力不仅在于它的技术特性,更在于它背后的故事和不断进化的精神。Java如此,此刻的你也是如此,学习和实践是最快的进化途径,加油吧,终身学习者。

        无论你是编程新手还是资深开发者,Java的世界都充满了无限可能。现在,让我们一起进入Java的世界,探索这个改变了世界且还在改变着世界的编程语言,感受它的魅力吧!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue+Elementui 全局配置el-table表格列宽可拖拽

1、需求分析 如何让表格列宽可以拖动 elementui的el-table如果想要列宽可以拖动的话 有一个属性叫 border 在模板里添加这个属性即可实现 但是系统里面的表格我不可能一个一个去添加border太麻烦 如果能够全局配置岂不是非常省时间吗 我们在main.js里面通过全局混入的方式来…

“Web渗透测试实战指南|BWAPP靶场全关卡通关教程(含高中低/不可能级别)从SQL注入到XSS攻击手把手教学|网络安全工程师必备技能“ 内容较长点赞收藏哟

目录 Low级别 ---A1 - Injection{注入}-- HTML Injection - Reflected (GET) HTML Injection - Reflected (POST) HTML Injection - Reflected (URL) HTML Injection - Stored (Blog) iFrame Injection LDAP Connection Settings Mail Header Injection (SMTP) OS Co…

释放 Cursor 的全部潜能:快速生成智能 Cursor Rules

释放 Cursor 的全部潜能:使用 PromptCoder 从 package.json 快速生成智能 Cursor Rules 我们将深入探讨如何利用您项目中的 package.json 文件,轻松生成 Cursor Rules,并通过 PromptCoder 这个强大的工具,快速创建高质量的 curso…

DeepSeek开源周-汇总

当 ChatGPT、Claude 这些闭源大模型严防死守技术秘密时,DeepSeek 却反其道而行,选择了全面开源,为整个 AI 生态注入新的活力。 在过去短短一周内,DeepSeek 连续在 GitHub 开源了 8 个核心技术项目,完成了一次震撼业界…

02内存映射与bmp解码

一、mmap 内存映射 内存映射的作用是把硬件设备的地址,映射到应用层的内存空间,这样用户就可以跨越系统层访问linux的硬件设备。 1、man 2 mmap 查看映射函数接口 NAMEmmap, munmap - map or unmap files or devices into memory映射 解除…

I2C驱动(九) -- i2c_adapter控制器驱动框架编写

相关文章 I2C驱动(一) – I2C协议 I2C驱动(二) – SMBus协议 I2C驱动(三) – 驱动中的几个重要结构 I2C驱动(四) – I2C-Tools介绍 I2C驱动(五) – 通用驱动i2c-dev.c分析 I2C驱动(六) – I2C驱动程序模型 I2C驱动(七) – 编写I2C设备驱动之i2c_driver I2C驱动(八) – 编写I2C…

分布式系统核心基石:CAP定理、BASE理论与一致性算法深度解析

一、CAP定理:分布式系统的设计边界 1.1 核心定义与经典三角 CAP定理(Brewers Theorem)指出,在分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性&a…

3 算法1-4 过河卒

题目描述 棋盘上 A 点有一个过河卒,需要走到目标 B 点。卒行走的规则:可以向下、或者向右。同时在棋盘上 C 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。 棋盘用坐标表示&#xff…

AutoMQ:无需 Cruise Control 实现 Kafka 的自动分区再平衡

导读:AutoMQ是一款贯彻云优先理念来设计的 Kafka 替代产品。AutoMQ 创新地对 Apache Kafka 的存储层进行了基于云的重新设计,在 100% 兼容 Kafka 的基础上通过将持久性分离至 EBS 和 S3 带来了 10x 的成本降低以及 100x 的弹性能力提升,并且相…

论文阅读之基于Syn2Real域的侧扫声纳类水雷目标探测

摘要 由于现实世界数据的稀缺性,基于深度学习的水下水雷探测受到了限制。这种稀缺性导致过拟合,即模型在训练数据上表现良好,但在未见数据上表现不佳。本文提出了一种使用扩散模型的Syn2Real (Synthetic to Real)域泛…

如何使用Docker搭建哪吒监控面板程序

哪吒监控(Nezha Monitoring)是一款自托管、轻量级的服务器和网站监控及运维工具,旨在为用户提供实时性能监控、故障告警及自动化运维能力。 文档地址:https://nezha.wiki/ 本章教程,使用Docker方式安装哪吒监控面板,在此之前,你需要提前安装好Docker. 我当前使用的操作系…

微服务学习(1):RabbitMQ的安装与简单应用

目录 RabbitMQ是什么 为什么要使用RabbitMQ RabbitMQ的安装 RabbitMQ架构及其对应概念 队列的主要作用 交换机的主要作用 RabbitMQ的应用 通过控制面板操作(实现收发消息) RabbitMQ是什么 RabbitMQ是一个开源的消息队列软件(消息代理…

综合实验处理表格

新建excel表格,输入信息,另存为csv文件。 利用notepad打开csv文件,可以观察格式 目标:通过编程处理文件,实现对数据的处理,成绩求和以及评价 对数据逐行处理,读一行,处理一行&#…

【leetcode hot 100 560】和为K的子数组

解法一&#xff1a;用左右指针寻找字串&#xff0c;如果和>k&#xff0c;则减少一个数&#xff08;left&#xff09;&#xff1b;如果和<k&#xff0c;则加上一个数&#xff08;right&#xff09;。 class Solution {public int subarraySum(int[] nums, int k) {int nu…

STM32CubeMx DRV8833驱动

一、DRV8833驱动原理 ​ STBY口接单片机的IO口&#xff0c;STBY置0电机全部停止&#xff0c;置1才能工作。STBY置1后通过AIN1、AIN2、BIN1、BIN2 来控制正反转。 AIN1AIN2电机状态00停止1speed反转speed1正转11停止 其中A端&#xff08;AIN1与AIN2&#xff09;只能控制AO1与…

Android 图片压缩详解

在 Android 开发中,图片压缩是一个重要的优化手段,旨在提升用户体验、减少网络传输量以及降低存储空间占用。以下是几种主流的图片压缩方法,结合原理、使用场景和优缺点进行详细解析。 效果演示 直接先给大家对比几种图片压缩的效果 质量压缩 质量压缩:根据传递进去的质…

JavaWeb后端基础(3)

原打算把Mysql操作数据库的一些知识写进去&#xff0c;但是感觉没必要&#xff0c;要是现在会的都是简单的增删改查&#xff0c;所以&#xff0c;这一篇&#xff0c;我直接从java操作数据库开始写&#xff0c;所以这一篇大致就是记一下JDBC、MyBatis、以及SpringBoot的配置文件…

ArcGIS Pro技巧实战:高效矢量化天地图地表覆盖图

在地理信息系统&#xff08;GIS&#xff09;领域&#xff0c;地表覆盖图的矢量化是一项至关重要的任务。天地图作为中国国家级的地理信息服务平台&#xff0c;提供了丰富且详尽的地表覆盖数据。然而&#xff0c;这些数据通常以栅格格式存在&#xff0c;不利于进行空间分析和数据…

TP-LINK路由器如何设置网段、网关和DHCP服务

目标 ①将路由器的网段由192.168.1.XXX改为192.168.5.XXX ②确认DHCP是启用的&#xff0c;并将DHCP的IP池的范围设置为排除自己要手动指定的IP地址&#xff0c;避免IP冲突。 01-复位路由器 路由器按住复位键10秒以上进行重置操作 02-进入路由器管理界面 电脑连接到路由器&…

基于Spring Boot的供应商管理系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…