✍前言 诞生于1985年的Java语言,早已年过三旬,甚至已经越过“35岁魔咒”,比很多同学的年龄大得多正所谓三十年河东,三十年河西,有人说Java已廉颇老矣,基本结构过于老套不灵活,但显示情况是它“老而不死”依旧常年霸榜,是棵常青树深爱Java的同学知道,Java并不老(Python年纪更大)、开发效率并不低(马拉松型选手看中长远效率)、语法并不是啰嗦(这是严谨的表现,同时也拥抱了Stream流式、Function函数式编程来简化开发)Java鼓励用严谨的方法、正确的方式来设置内容,这让Java程序员们对待代码更有 全局性 ,更适合构建规模性的企业级项目另外,Java做到了哪怕最新版JDK能(几乎)100%兼容首个版本,这无不依靠于优秀的设计和规范的制定2000年左右随着Java的高速发展,被大量用于企业应用的开发,所以迫切需要规范的解决方案正所谓 一流企业定标准、二流企业做品牌、三流企业做产品 ,这个活Sun公司自然不会放过,它就是 企业版Java ,也叫Java EE(后改名为Jakarta EE)Java EE是一系列技术标准的集合(只定标准,不提供实现),其中很多技术经历这么多年的发展已经很成熟、应用得很广泛了但深入了解后会发现,Java EE很多技术都是 起个大早,赶个晚集 ,否则也不会有Spring现在的绝对霸主地位点拨-Java EE本文提纲版本约定Java EE:6、7、8Jakarta EE:8、9、9.1✍正文上面说到,Java能够 历久弥新 得益于它是非常严谨的、注重编码规范、注重设计规范的编程语言按照规范实施做到有据可循,实施过程又可反馈给规范,形成正反馈的周而复始,越来越完善本专栏将介绍Java EE/Jakarta EE相关的几十种技术,作为Java企业级开发的标准技术,很多技术应用非常广泛本文作为第一篇,将从发展历程出发,先一起全方位地了解到它JDK发展简史在讲述Java EE的发展历程之前,先简要回顾(普及)一下JDK的发展史,方便在时间上对应参照,毕竟开发者一般对JDK的版本会更熟、更敏感些诞生: 1995年5月 ,Oak语言改名为Java,标志着Java的诞生,并且提出了著名的 Write Once,Run Anywhere 口号下面用表格形式记录其发版时间轴
版本发布日期焦点说明JDK 1.01996.01Java虚拟机、基础类库JDK 1.11997.02规定了Jar文件格式,JDBC、JavaBeans、RMI等开始支持内部类和 反射JDK 1.21998.12引入集合框架Collections、Map等从此版本开始,分为3个版本:J2SE/J2EE/J2ME( 注:1999.04著名的HotSpot虚拟机诞生 ,顺势推出了Java EE首个版本)JDK 1.32000.05千禧年的第一个版本,对类库进行了优化JDK 1.42002.02支持正则Pattern、 NIO 、JDBC 3.0、assert断言JDK 52004.09JDK命名方式变化、自动拆装箱、泛型、枚举、可变参数、增强for循环、JUC并发包 等等非常多新特性JDK 62006.12编译器注解处理器(lombok的原理)、J2xx改为Java XXJDK 72009.02try-with-resources、NIO2(也叫AIO)、 泛型推断JDK 82014.03憋了5年的大招,果然经典 Lambda表达式、函数式编程、Stream流式编程、方法引用、接口默认方法、彻底移除HotSpot的永久代.........JDK 112018.09Jigsaw模块化、增强类型推断、革命性的垃圾收集器ZGC.........JDK 172021.09...敬请期待期间,关于Java/Sun公司有些大事记,记录一下
日期事件1995.05Java语言诞生1996.01JDK 1.0版本发布1998.12JAVA2企业平台J2EE发布 (和JDK 1.2一起)2005.06JavaOne大会召开(Java诞生10周年),J2EE更名为Java EE, J2SE更名为Java SE,J2ME更名为Java ME2009.04甲骨文Oracle以现金收购Sun微系统公司,交易价格74亿美元 (Sun公司市值顶峰时超2000亿美金 眼看他起高楼,眼看他宴宾客,眼看他楼塌了 )Sun公司最大的资产,便是Java从此Java商标被Oracle收入囊中,才有了后来的Oracle PK Google大战2017.08Oracle将 Java EE (Java SE还自己保留)交给开源组织,Eclipse基金会接手但Oracle不允许开源组织使用Java名号,所以Jakarta EE名称于2018.02.26应运而生什么是Java EE?作为一个(资深)的Java开发者,这似乎是一个很简单的问题Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言它分为三个版本:Java SE(J2SE):标准版基础中的基础,后面2个版本都依赖于它当前最新版本是Java 17(LTS版本,将于2021年9月发布)Java EE(J2EE):企业版用于企业级大型应用开发,包含了Web、Security、Management等几十种标准技术Java ME(J2ME):移动版随着Android/iOS的流行,它已几乎销声匿迹由于Java EE能够直接应用于企业级应用开发,解决实际问题, 直接产生价值 ,因此也常说它价值更高所以用谷歌百度一下“Java培训”关键字,基本都是培训Java EE的作为 common sense ,特别是Java程序员除了需对JDK的历史有所了解外,Java EE的发展历程也是有必要知道的,毕竟这是基础知识点,是 聊天的谈资 ,是你的 内功 Java EE发展史J2EE(JavaEE)自1999年首次发布以来,已成为实现和部署可移植、多层企业应用程序的集成 标准 (它是标准,它是规范),现在了解下它的发展史,记录到如下表格(总成体系的Java EE 1.4版本开始)说明:该表格是YourBatman翻阅多处资料搜集整合,全网最全的一份,请收藏使用转载请注明出处
版本发布日期焦点说明J2EE 1.42003.12对Web服务更好支持 启用javax命名空间Servlet 2.4、JSP 2.0、EJB 2.1等Java EE 52006.05以Web为着力点继续优化Servlet 2.5、JSP 2.1、 EJB 3.0 、注解支持等Java EE 62009.12添加了大量新技术来简化开发,如: Servlet 3.0 (异步处理)、Bean Validation、EJB 3.1、JSF 2.0、JPA 2.0、 上下文和依赖注入(CDI)Java EE 72013.06提高生产力满足企业需求和HTML5Servlet 3.1、 WebSocket 1.0、JSON 1.0、JMX 2.0、Batch 1.0Java EE 82017.08增加了JSON绑定和安全相关Servlet 4.0、Bean Validation 2.0、CDI 2.0、JPA 2.2Jakarta EE入局2017.08Oracle将Java EE交给开源组织,Eclipse基金会接手(Apache基金会爆冷出局还是不想要?)但Oracle不允许开源组织使用Java名号,所以Jakarta EE名称于2018.02.26应运而生Jakarta EE 82019.09规范与Java EE 8完全相同 Maven的GAV变了: javax.servlet:javax.servlet-api:4.0.1 -> jakarta.servlet:jakarta.servlet-api:4.0.2 ,但命名空间没变依旧还是javax.,算是个小过度吧Jakarta EE 92020.11没有加入新功能 ,Eclipse基金会的首个正式版本命名空间从 javax. 迁移到 jakarta. ,前者从此成为历史 所有模块 大版本号+1,如 Servlet 4.0.2 -> Servlet 5 以表示其断层式升级Jakarta EE 9.12021.06相较于9 没有 加入新API主要提供对Java SE 11的运行支持2017年随着Oracle把Java EE交给开源基金会, Java EE从此成为历史 ,接下来将由社区驱动的 Jakarta EE 取而代之虽然Java EE已成过去式,但它似乎代表着我们的 程序青春 ,依然是沟通的主力因此,在很长很长很长一段时间内,Java EE知名度依旧盖过Jakarta EE,沟通交流中使用它居多Tips:Java EE版本号和Java SE没有绝对联系如即使到最新的Jakarta EE 9、9.1版本对JDK的最低要求是8,而非9咱们程序员可能会吐槽Oracle为毛不让使用Java EE商标,这么搞太费劲了但在Oracle眼中,可能,一切都是利益(Oracle号称是一个律师比工程师数量还多的高科技企业)补充:什么是Eclipse基金会2004年2月该非盈利组织的正式成立,由包括开发者、消费者和插件提供商在内的各独立团体组成的董事会,为Eclipse的长期发展负责,它就是Eclipse基金会该基金会最初只有19个开源项目,现在有300+个之多,我们比较熟悉的就有:Java开发工具:功能强大的Java开发IDE Eclipse众多Jakarta项目:Jakarta Annotations、Jakarta Bean Validation、Jakarta JSON Processing等等Vert.X:一个面向现代web和企业的异步应用框架,一个可能会撼动Spring地位的全家桶框架另外,可把Eclipse基金会和Apache基金会对照着看,程序员对后者理应更熟悉些什么是Jakarta EE该名称的由来和两个大事记有关:为了让Java EE更开放,Oracle决定为它寻找一个新东家(呵呵,我笑而不语)2017年8月,Oracle将 Java EE 交给开源组织,Eclipse基金会接手(Apache爆冷出局还是不想要?)Oracle拒绝让基金会继续使用Java名字,因此Eclipse做了一项名义调查,从Jakarta EE和Enterprise Profile两个名称中二选一,前者大比例胜出所以在2018年3月份, Eclipse宣布正式将Java EE更名为Jakarta EE ,并且确定了logo(如上图)另外,跟着更名的还有一些和Java EE紧密相关的名词,如Glassfish -> Eclipse Glassfish;JCP -> EE.next;ODM(Oracle Development Management) -> PMC总而言之:Jakarta EE你可认为它(的内容)就是Java EE,只是名字换了,老东家换了之前由JCP来推动它的发展,以后将有开源社区推动 至于前景如何,咱们拭目以待 Jakarta EE发展史Jakarta EE还很年轻,2017年8月从Oracle手中接棒过来算起,也不过4岁,谈不上什么发展史,是好是坏周期太短也不能早下定论截止到目前,共发布了三个版本, 内容 几乎没有变化,只在命名空间、版本号方面稍有改变,记录如下:
版本发布日期焦点说明Jakarta EE 82019.09规范与Java EE 8完全相同 Maven的GAV变了: javax.servlet:javax.servlet-api:4.0.1 -> jakarta.servlet:jakarta.servlet-api:4.0.2 ,但命名空间没变依旧还是javax.,算是个小过度吧Jakarta EE 92020.11没有加入新功能 ,Eclipse基金会的首个正式版本命名空间从 javax. 迁移到 jakarta. ,前者从此成为历史 所有模块 大版本号+1,如 Servlet 4.0.2 -> Servlet 5 以表示其断层式升级Jakarta EE 9.12021.06相较于9 没有 加入新API主要提供对Java SE 11的运行支持一站式聚合API如你所知,Java EE/Jakarta EE是几十种技术(规范)的几何,几乎每种技术都有其API(对应一个Jar),为了方便总揽全局,Java EE自6版起提供了一站式聚合API,导入一个就够了:
<dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>6.0.0</version> <scope>provided</scope></dependency><!-- Jakarta命名空间版本 --><dependency> <groupId>jakarta.platform</groupId> <artifactId>jakarta.jakartaee-api</artifactId> <version>9.1.0</version> <scope>provided</scope></dependency>
效果如下:特别注意:实际工作中 不建议 使用这种粗暴的、大而全的导入方案,而是应该按需导入精确把握,还classpath一片“干净”,并且也能做到 心中有数 ,方可运筹帷幄有Java EE SDK吗?既然Java SE有JDK,那么Java EE是否也有SDK呢?答案: 有的 Oracle官网/Jakarta EE官网均提供了SDK供以下载:https://www.oracle.com/java/technologies/javaee-8-sdk-downloads.html只不过此SDK可能让你失望了,它不是传统的软件开发工具包,而更像是一个技术合集,并且和自家的 Glassfish 强绑定,包含有以下内容:doc官方文档几十种技术的使用samples(基于Maven管理、构建)glassfish容器,强耦合总的来讲,如若是抱着学一学的目的那么可以down下来玩玩,毕竟里面的samples示例、文档比较全如若你是抱着 使用 的目的,那就不建议了,毕竟glassfish我们(国内)很少使用✍总结30年弹指一挥间,Java EE在逐渐淡出Java开发者的视野,但中短期来看它依旧是我们绕不过的内容,经常能听到、看到、聊到当在研究Spring等开源框架的时候,也经常会看到Java EE的影子本文介绍了Java EE的发展史,目的是对它有个笼统的认识从Java EE到Jakarta EE,它能否重新焕发生命力我不知道,但留下来的不少东西依旧是目前的主流(如Servlet规范、JPA等等),具有 非常高 的学习价值,切莫轻视
0 评论