当前位置: 首页 > 科技观察

从Java EE到Jakarta EE,企业版Java的发展历程

时间:2023-03-14 14:17:08 科技观察

从JavaEE到JakartaEE,企业版Java的开发历程请联系BAT的乌托邦公众号转载本文。前言你好,我是你的蝙蝠侠。诞生于1985年的Java语言,如今已经30多岁了,甚至已经过了“35岁魔咒”,比很多同学都要老很多。正所谓30岁的河西,30岁的河西,有人说Java相当古老,它的基础结构太过老套、不够灵活,但这说明它“老而不老”。已死”,依然常年霸榜榜单,堪称常青树。喜欢Java的同学都知道Java不老(Python老),开发效率不低(马拉松跑者看的是长期效率),语法不啰嗦(这是严谨的表现,也拥抱Streamflow,Function函数式编程以简化开发)。Java鼓励以严谨和正确的方式设置内容,这使得Java程序员可以更全局地对待代码,更适合构建大型企业级项目。另外,Java做到了即使是最新版本的JDK也(几乎)100%兼容第一版,这全靠优秀的设计和规范制定。2000年前后,随着Java的飞速发展,它被广泛应用于企业应用的开发中,因此迫切需要标准化的解决方案。正所谓一流的公司定标准,二流的公司做品牌,三流的公司做产品,Sun自然不会放过这一点。它是Java的企业版,也叫JavaEE(后更名为JakartaEE)。JavaEE是一系列技术标准的集合(只制定标准,不提供实现),其中很多标准经过这么多年的发展已经成熟并被广泛使用。但是深入了解之后,你会发现很多JavaEE技术起步早,赶超晚,否则Spring也不会有现在这样的绝对霸主地位。本文概述了版本约定JavaEE:6、7、8JakartaEE:8、9、9.1如上所述,Java之所以能够长盛不衰,是因为它是一种非常严谨的编程语言,注重编码标准和设计标准。根据规范的实施,有据可循,实施过程可以反馈到规范,形成正反馈循环,日趋完善。本专栏将介绍与JavaEE/JakartaEE相关的数十种技术。作为Java企业级开发的标准技术,很多技术被广泛应用。作为第一篇文章,本文将从开发过程入手,先全面了解一下。JDK发展简史在讲述JavaEE的发展史之前,我们先简单回顾一下(科普一下)JDK的发展史,方便及时参考。毕竟开发者一般对JDK的版本比较熟悉和敏感。诞生:1995年5月,Oak语言更名为Java,标志着Java的诞生,并提出了著名的WriteOnce,RunAnywhere口号。发布时间表记录在下面的表格中。版本发布日期重点描述JDK1.01996.01Java虚拟机,基础类库JDK1.11997.02指定Jar文件格式,JDBC,JavaBeans,RMI等开始支持内部类和反射JDK1.21998.12引入集合框架Collections,Map,ETC。从这个版本开始分为3个版本:J2SE/J2EE/J2ME(注:大名鼎鼎的HotSpot虚拟机诞生于1999.04,第一版JavaEE顺势推出)JDK1.3第一版千禧年2000.05,针对类库优化JDK1.42002.02支持正则模式,NIO,JDBC3.0,assertJDK52004.09JDK命名变更,自动拆箱,泛型,枚举,可变参数,增强for循环,JUC并发包等许多newfeaturesJDK62006.12Compilerannotationprocessor(lombok原理),J2xx改为JavaXXJDK72009.02try-with-resources,NIO2(也叫AIO),genericinferenceJDK82014.03憋了5年果然是个经典的。Lambda表达式、函数式编程、Stream流式编程、方法引用、接口默认方法、彻底去除HotSpot的永久代……JDK112018.09Jigsaw模块化、增强类型推断、革命性的Garbage收集器ZGC……。..JDK172021.09...敬请期待。这期间有一些关于Java/Sun的大事,记录下来。日期事件1995.05Java语言诞生1996.01JDK1.0版本发布1998.12JAVA2企业平台J2EE发布(与JDK1.2一起发布)2005.06JavaOne大会召开(Java诞生10周年),J2EE更名为JavaEE,J2SE被更名为JavaSE,J2ME更名为JavaME2009.04甲骨文以74亿美元的交易价格现金收购SunMicrosystems(Sun巅峰时期市值超过2000亿美元,看他盖高楼,看他宴客,看他他的大楼倒塌了)。Sun最大的资产是Java。从此,Java商标被甲骨文收购,甲骨文VK谷歌之战才告一段落。2017年8月,Oracle将JavaEE(JavaSE是自己保留的)交给开源组织,Eclipse基金会接手。但是Oracle不允许开源组织使用Java名称,所以JakartaEE这个名称在2018.02.26上应运而生什么是JavaEE?作为一名(高级)Java开发人员,这似乎是一个非常简单的问题。Java是一种面向对象的编程语言,可以编写跨平台的应用软件。它分为三个版本:JavaSE(J2SE):标准版。基础的基础,后两个版本都依赖于它。目前最新版本为Java17(LTS版本,2021年9月发布)JavaEE(J2EE):企业版。用于企业级大型应用开发,包括Web、Security、Management等数十种标准技术。JavaME(J2ME):移动版。随着Android/iOS的普及,它几乎消失了。因为JavaEE可以直接应用于企业级应用开发,解决实际问题,直接产生价值,所以人们常说它更有价值。于是用谷歌和百度搜索关键字“Java培训”,基本上是培训JavaEE。作为一个常识,尤其是对于Java程序员来说,除了了解JDK的历史,了解JavaEE的发展历史也是很有必要的。毕竟这是基础知识点,聊天话题,内功。JavaEE开发历史自1999年首次发布以来,J2EE(JavaEE)已成为实施和部署可移植的多层企业应用程序的集成标准(它是一种标准,一种规范)。到下表(从系统JavaEE1.4版本开始)。说明:本表格由YourBatman通过多方信息收集整合而成。是全网最完整的副本。请收藏并使用它。版本发布日期重点描述J2EE1.42003.12更好地支持Web服务。启用javax命名空间。Servlet2.4、JSP2.0、EJB2.1等JavaEE52006.05继续以Web为重点进行优化。Servlet2.5、JSP2.1、EJB3.0、注解支持等。JavaEE62009.12加入了很多新技术来简化开发,例如:Servlet3.0(异步处理)、BeanValidation、EJB3.1、JSF2.0、JPA2.0、上下文和依赖项注入(CDI)JavaEE72013.06提高生产力以满足企业需求和HTML5。Servlet3.1、WebSocket1.0、JSON1.0、JMX2.0、Batch1.0JavaEE82017.08添加了JSON绑定和安全相关。Servlet4.0、BeanValidation2.0、CDI2.0、JPA2.2JakartaEE入局2017.08Oracle将JavaEE交给开源组织,Eclipse基金会接手(Apache基金会不爽还是不要?)。但Oracle不允许开源组织使用Java名称,因此JakartaEE名称于2018.02.26应运而生。JakartaEE82019.09规范与JavaEE8完全相同。Maven的GAV变了:javax.servlet:javax.servlet-api:4.0.1->jakarta.servlet:jakarta.servlet-api:4.0.2,但是命名空间没变,还是javax.*,这是一个smallovershootJakartaEE92020.11无新增功能,EclipseFoundation首个正式版。命名空间从javax.*迁移到jakarta.*,前者从此成为历史。所有模块的主版本号+1,如Servlet4.0.2->Servlet5表示其错误升级JakartaEE9.12021.06与9相比,没有增加新的API。它主要为JavaSE11提供运行支持。2017年,随着甲骨文将JavaEE移交给开源基金会,JavaEE从此成为历史,并将被社区驱动的JakartaEE所取代。虽然JavaEE已经成为过去式,但它似乎代表了我们程序的青春,依然是传播的主力军。因此,在很长很长一段时间里,JavaEE还是比JakartaEE更受欢迎,而且多用于通信。Tips:JavaEE版本号和JavaSE没有绝对的联系。例如,即使最新的JakartaEE9和9.1版本最低要求JDK8,而不是9,我们的程序员可能会抱怨Oracle借口不使用JavaEE商标,太费力了。但在甲骨文眼里,也许一切都是利益(甲骨文自称是律师多于工程师的高科技企业)。一个由包括消费者、插件提供者在内的独立团体组成的董事会负责Eclipse的长期发展,它就是EclipseFoundation。基金会最初只有19个开源项目,现在有300多个,其中我们比较熟悉的有:Java开发工具:强大的Java开发IDEEclipse许多Jakarta项目:JakartaAnnotations、JakartaBeanValidation、JakartaJSONProcessing等Vert.X:一个面向现代web和企业的异步应用框架,一个可能撼动Spring地位的全家桶框架另外,可以比较一下EclipseFoundation和ApacheFoundation,程序员对后者应该更熟悉一些。什么是JakartaEE名字的由来与两件大事有关:甲骨文为了让JavaEE更加开放,决定为它找一个新东家(呵呵,笑而不语)。2017年8月,Oracle将JavaEE交给开源组织,Eclipse基金会接手(Apache不高兴了还是不要了?)Oracle拒绝让基金会继续使用Java的名字,于是Eclipse做了一个名义上的调查,来自JakartaEEEnterpriseProfile和EnterpriseProfile两个名字选其一,前者大比分胜出。于是在2018年3月,Eclipse宣布正式将JavaEE更名为JakartaEE,并确定了logo(如上图)。此外,随着名称的变化,还有一些与JavaEE密切相关的术语,如Glassfish->EclipseGlassfish;JCP->EE.next;ODM(OracleDevelopmentManagement)->PMC简而言之:JakartaEE你可以认为它(内容)就是JavaEE,只是名字变了,老东家变了。之前由JCP推动,未来将由开源社区推动。至于前景如何,我们拭目以待。JakartaEE的发展历史JakartaEE还很年轻。2017年8月接手甲骨文时才4岁,没有发展史。截至目前,一共发布了三个版本,内容几乎没有变化,只有命名空间和版本号有细微变化,记录如下:asJavaEE8.Maven的GAV变了:javax.servlet:javax.servlet-api:4.0.1->jakarta.servlet:jakarta.servlet-api:4.0.2,但是命名空间没变,依然是javax。*,这是JakartaEE92020.11的一个小超调,没有添加新功能,EclipseFoundation的第一个正式版本。命名空间从javax.*迁移到jakarta.*,前者从此成为历史。所有模块的主版本号+1,如Servlet4.0.2->Servlet5表示其错误升级JakartaEE9.12021.06与9相比,没有增加新的API。主要提供对JavaSE11的运行支持。一站式聚合API大家知道,JavaEE/JakartaEE是几十种技术(标准)的集合,几乎每一种技术都有它的API(对应一个Jar)。为了方便概览,JavaEE从6版本开始提供了一站式聚合API,导入一个即可:javaxjavaee-api6.0。0providedjakarta.platformjakarta.jakartaee-api9.1.0provided效果如下:特别注意:不建议在实际工作中使用这种简陋、大而全的导入方案,而且要按需导入,准确把握,classpath要“干净”,运筹帷幄之前就应该心知肚明。有JavaEESDK吗?既然JavaSE有JDK,那JavaEE是不是也有SDK?答:是的。Oracle官网/JakartaEE官网都提供SDK下载:https://www.oracle.com/java/technologies/javaee-8-sdk-downloads.html但是这个SDK可能会让你失望,它不是传统的软件开发包更像是一个技术集合,与自身的Glassfish是强绑定的,包括以下内容:doc官方文档数十种技术使用示例(基于Maven管理构建)Glassfish容器,强耦合一般来说,如果有学习的目的,可以下载玩玩。毕竟里面的样本和文档都比较齐全。如果你是抱着使用的目的,那么就不推荐了,毕竟我们(国内)很少用glassfish。总结近30年来,JavaEE逐渐淡出了Java开发者的视野,但在中短期内,它仍然是我们绕不过去,时常能听到、看到、谈论到的东西它。在研究Spring等开源框架时,经常会看到JavaEE的影子。本文介绍JavaEE的发展历史,目的是对它有一个大概的了解。从JavaEE到JakartaEE,不知道能不能恢复元气,但是留下来的很多东西还是现在的主流(比如Servlet规范,JPA等),有非常高的学习价值,所以不要不要低估它。