简单唠唠java成长史

嘿,咱今天来唠唠 Java 技术这一路的发展历程,那可真是一部充满故事的技术进化史。​

Java 基础的诞生与成长​

故事得从 1990 年说起,Sun 公司启动了个 “绿色计划” ,这计划的初衷是搞一种能在各种智能家电设备上跑的语言。当时有个叫詹姆斯・高斯林的大神,他带着团队吭哧吭哧开发出了 Oak 语言,这就是 Java 的前身。不过呢,Oak 在消费品市场上没掀起什么水花。​

直到 1995 年,互联网浪潮来袭,Oak 一下子找到了它的 “第二春” ,改名为 Java,正式出道。Java 一亮相就喊出了 “一次编写,到处运行” 的口号,凭借 Java 虚拟机,实现了跨平台的神奇操作,这可太吸引人了,就像给程序员们开了一扇任意门,写好的代码能在不同系统里畅通无阻。同年,Java 1.0 发布,还支持把 Applet 嵌入网页,早期的 AWT(抽象窗口工具包)也出现了。​

1997 年,Java 1.1 更新,带来了内部类、Java Beans、JDBC(数据库连接)和反射 API 等新玩意儿,让 Java 的功能更丰富了,就像给一个工具箱里又添了不少趁手的工具。​

后来,Java 不断更新迭代,1998 年 JDK 1.2 发布,Java 技术体系分成了 J2SE(标准版,适合桌面应用开发)、J2EE(企业版,用于企业级开发)、J2ME(微型版,面向移动终端开发)三个平台,这就像把 Java 这个大宝藏,按照不同场景需求,分成了三个小宝藏库,方便开发者各取所需。2000 年 JDK 1.3 引入 HotSpot JVM、JNDI;2002 年 JDK 1.4 新增正则表达式、断言、NIO 和日志 API 等,Java 越来越强大,在各种开发场景中都能应对自如。​

2004 年,Java 5(J2SE 5.0)发布,这可是个大版本更新,带来了泛型、注解、枚举等超实用的特性,就好比给 Java 换了一身超级装备,开发效率大幅提升。从这以后,Java 版本号也逐渐简化,发展越来越顺。​

2006 年,Sun 把 Java 开源,OpenJDK 项目诞生,这让更多开发者能参与到 Java 的发展中来,大家一起出谋划策,让 Java 变得更好。同年,Java SE/EE/ME 命名方式取代了 “J2” 前缀。2009 年,Oracle 花 74 亿美元收购了 Sun,Java 就归 Oracle 管啦。​

2011 年,Oracle 发布 Java 7.0,支持菱形语法、多异常捕获,不过因为处在收购过渡期,新特性不算多。到了 2014 年,Java 8.0 横空出世,这又是一个里程碑版本,引入 Lambda 表达式、Stream API、新日期时间库等,给 Java 编程带来了新的思路和玩法,就像给游戏更新了全新的玩法模式,让开发者们直呼过瘾。从 2017 年开始,Java 改成每半年发布一次版本,每三年推出 LTS(长期支持)版本,更新速度加快,能更好地跟上技术发展的脚步。​

构建工具 Maven 的出现​

Maven 诞生于 2004 年左右,在它出现之前,Java 项目的依赖管理和构建过程那叫一个混乱。不同项目的依赖包版本不一致,手动下载、管理这些依赖简直是噩梦,构建过程也缺乏统一规范。Maven 就像是一个贴心的管家,它用 pom.xml 文件来管理项目的依赖、构建配置等。有了它,开发者只要在 pom.xml 里声明项目需要的依赖包,Maven 就能自动去中央仓库下载,还能处理好依赖包之间的版本冲突问题。而且它规定了标准的项目目录结构和构建生命周期,比如清理、编译、测试、打包等阶段,让项目构建变得简单又规范,大大提高了开发效率,就像给杂乱的房间来了一次彻底的整理,所有东西都井井有条。​

Spring 框架的崛起​

2003 年,Spring 框架首次发布。当时企业级 Java 开发面临着很多问题,比如 EJB(Enterprise JavaBeans)过于复杂,开发成本高,灵活性差。Spring 框架就像是一股清流,它倡导轻量级的开发理念,采用控制反转(IoC)和依赖注入(DI)的设计思想。IoC 就好比把对象创建和管理的权力从开发者手中拿走,交给 Spring 容器来管理,开发者只需要关注业务逻辑实现就行。依赖注入则是 Spring 容器在运行时把对象依赖的其他对象注入进来,让对象之间的依赖关系变得清晰、可控。​

后来,Spring 不断发展壮大,2007 年左右,Spring MVC 出现,它为 Web 开发提供了强大的支持,让开发 Web 应用变得更加容易。同时,Spring 还和其他技术深度整合,比如和 Hibernate 整合用于数据库持久化操作,形成了一套完整的企业级开发解决方案。Spring 就像一个超级大平台,把各种 Java 开发的优秀理念和技术整合在一起,让开发者能更高效地开发出健壮的企业级应用,越来越多的项目开始采用 Spring 框架,它逐渐成为 Java 企业级开发的标配。​

SSM 框架组合时代​

SSM 指的是 Spring、Spring MVC 和 MyBatis(以前叫 iBatis)。MyBatis 最早在 2002 年左右出现,它是一个优秀的持久层框架,和传统的 JDBC 操作数据库相比,MyBatis 把 SQL 语句从 Java 代码中分离出来,写在 XML 配置文件里,这样代码的可读性和维护性大大提高。而且它支持灵活的 SQL 映射,能方便地进行动态 SQL 编写,对数据库操作的控制更加精细。​

随着 Java 开发的发展,很多项目发现把 Spring、Spring MVC 和 MyBatis 组合在一起用,效果特别好。Spring 负责管理对象和业务逻辑,Spring MVC 处理 Web 请求和视图渲染,MyBatis 负责数据库持久化操作。这三个框架相互配合,取长补短,就像一个默契十足的团队,在很长一段时间里成为 Java Web 开发的主流框架组合,被广泛应用于各种项目开发中,从中小型企业应用到大型互联网项目都能看到 SSM 的身影,帮助开发者快速搭建稳定、高效的 Web 应用系统。​

Spring Boot 的革新​

2014 年,Spring Boot 发布,它的出现又一次改变了 Java 开发的格局。在 Spring Boot 之前,使用 Spring 框架搭建项目,配置过程相当繁琐,各种 XML 配置文件让人眼花缭乱,引入依赖也需要小心翼翼,生怕出问题。Spring Boot 就像是一个超级便捷的开发神器,它倡导 “约定优于配置” 的理念,很多常用的配置都有默认值,开发者不用再写大量的配置文件,只要按照约定的目录结构和命名规则来开发,就能快速搭建起一个 Spring 项目。​

比如说,要开发一个简单的 Web 应用,用 Spring Boot 的话,可能只需要几行代码加上少量配置就能搞定,而用传统的 Spring 开发则需要更多的配置和代码量。Spring Boot 还内置了很多常用的中间件,像 Tomcat、Jetty 等 Web 服务器,以及对各种数据库、缓存等的支持,引入相关依赖后就能快速使用。它极大地降低了 Spring 项目的开发门槛,提高了开发效率,让开发者能更专注于业务逻辑实现,所以一经推出就受到了广大开发者的热烈欢迎,迅速在 Java 开发领域流行开来,很多新项目都优先选择使用 Spring Boot 来构建。​

Redis 缓存技术的流行​

Redis 诞生于 2009 年,它是一个基于内存的高性能键值对数据库,主要用来做缓存。在早期的 Java 项目中,数据库访问往往是性能瓶颈,每次从磁盘的数据库中读取数据比较慢。Redis 出现后,情况就大不一样了。它把数据存放在内存中,读写速度极快。​

在 Java 项目里,开发者可以很方便地把经常访问但数据变动不频繁的数据,比如一些配置信息、热门商品信息等,存到 Redis 缓存中。当应用程序需要这些数据时,优先从 Redis 中读取,如果没有再去数据库查询,查询到后再存入 Redis 缓存,下次就能快速读取了。这样大大减少了数据库的访问压力,提高了系统的响应速度。而且 Redis 支持多种数据结构,像字符串、哈希、列表、集合、有序集合等,能满足不同场景的缓存需求。随着互联网应用对性能要求越来越高,Redis 在 Java 项目中的使用越来越广泛,成为提升系统性能必不可少的技术之一。​

Kafka 消息队列的兴起​

Kafka 最早是由 LinkedIn 公司在 2011 年开发,2012 年开源。在大型分布式系统中,各个组件之间需要进行高效的数据传输和异步通信。传统的方式可能是通过直接调用接口等同步方式,这样在高并发场景下容易出现性能问题和系统瓶颈。Kafka 作为一个分布式消息队列,就很好地解决了这些问题。​

在 Java 开发的分布式系统中,Kafka 可以作为消息的中转站。比如一个电商系统,用户下单后,订单相关信息可以发送到 Kafka 消息队列中,而订单处理系统、物流系统、支付系统等可以从 Kafka 中获取这些消息,进行各自的业务处理。这样各个系统之间解耦,不会因为某个系统的故障影响其他系统运行,而且可以通过 Kafka 的分区、副本等机制实现高吞吐量和数据可靠性。随着大数据、实时处理等技术的发展,Kafka 在 Java 项目中用于日志收集、数据传输、实时流处理等场景越来越多,成为构建大型分布式系统不可或缺的一部分。​

Docker 容器化技术与 Java 结合​

Docker 在 2013 年开源,它带来了一种全新的软件打包和部署方式。在以前,Java 应用部署时,需要在不同环境中安装各种依赖,配置运行环境,而且不同环境可能会出现依赖冲突等问题,部署过程相当复杂。Docker 就像是一个超级大集装箱,把 Java 应用及其所有依赖,包括 Java 运行环境、各种框架、依赖库等,都打包在一个容器里。​

这个容器是独立的,里面的环境和外面的宿主机环境相互隔离,不会受到外界环境干扰。在部署时,只需要把这个容器复制到目标服务器上,启动容器,Java 应用就能在一致的环境中运行起来。比如开发了一个基于 Spring Boot 的 Java Web 应用,用 Docker 打包后,不管是在开发环境、测试环境还是生产环境,只要安装了 Docker,都能快速部署运行,大大提高了部署效率,降低了部署成本,也减少了因为环境不一致导致的各种问题。Docker 和 Java 的结合,让 Java 应用的部署和运维变得更加简单、高效,在容器化部署的浪潮中,越来越多的 Java 项目开始采用 Docker 技术。​

Java 前端发展史​

早期的 Java 前端主要是通过 Applet 来实现网页的交互功能,Applet 是一种可以嵌入到 HTML 页面中的 Java 小程序。在 1995 年 Java 诞生后不久推出,当时网页大多是静态的,Applet 的出现给网页带来了动态交互能力,可以实现一些简单的动画效果、表单验证等功能。但 Applet 也有不少缺点,比如它需要在客户端安装 Java 运行环境,加载速度慢,而且安全性方面也存在一些隐患,随着网页技术的发展,它逐渐被淘汰。​

后来,Java 在前端方面主要是通过和 JavaScript 配合来实现一些功能。Java 后端生成网页内容,通过 HTTP 协议传输到前端浏览器,前端通过 JavaScript 来操作 DOM(文档对象模型),实现页面的动态更新和交互。在企业级 Web 开发中,Java Server Pages(JSP)和 Servlet 技术用于生成动态网页内容。JSP 页面中可以嵌入 Java 代码,在服务器端运行生成 HTML 代码发送到客户端。Servlet 则主要用于处理 HTTP 请求和响应,和 JSP 配合得很好,比如通过 Servlet 从数据库获取数据,然后交给 JSP 进行页面展示。​

随着互联网的发展,出现了一些基于 Java 的前端框架,比如 GWT(Google Web Toolkit)。它允许开发者用 Java 语言编写前端代码,然后编译成 JavaScript 在浏览器中运行。GWT 提供了一套丰富的 UI 组件和开发工具,能提高前端开发效率,但它也有一些局限性,比如编译时间长,生成的 JavaScript 代码体积较大。​

近几年,随着前后端分离架构的流行,Java 在前端方面更多地是作为后端服务提供者,和各种现代前端框架(如 Vue.js、React 等)配合使用。Java 后端通过 RESTful API 接口向前端提供数据,前端负责数据展示和交互逻辑。这种方式让前后端开发分工更加明确,开发效率更高,也能更好地适应快速变化的前端技术发展趋势。同时,Java 也在不断发展一些相关技术来更好地支持前后端分离架构,比如 Spring Cloud Gateway 等微服务网关技术,用于管理前端对后端 API 的访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值