当前位置: 首页 > news >正文

Jakarta EE课程扩展阅读(一)

Jakarta EE课程扩展阅读(一)

1. 简述当今软件开发的主要特点

       当今的软件开发已经高度演进,呈现出以下几个核心特点:

  • 敏捷(Agile)与 DevOps 的普及:开发模式从传统的瀑布模型转向敏捷开发(如 Scrum、Kanban),强调快速迭代、持续反馈和适应变化。DevOps 文化则打破了开发(Dev)和运维(Ops)之间的壁垒,通过自动化工具链实现持续集成(CI)、持续交付/部署(CD),极大地提高了软件交付的频率和质量。

  • 云原生(Cloud-Native)架构:软件被设计为在云环境中(如 AWS, Azure, GCP)以最佳方式运行。这通常涉及 微服务(Microservices) 架构,即将大型单体应用拆分为一组小而独立的服务。

  • 容器化(Containerization)与编排:以 Docker 为代表的容器技术将应用及其依赖打包在一起,提供了极佳的环境一致性和可移植性。Kubernetes 则成为容器编排的事实标准,负责自动化部署、扩展和管理容器化应用。

  • API 优先(API-First):系统设计首先关注定义清晰、稳定、易用的 API(通常是 RESTful API),然后再进行具体实现。这使得前后端分离、微服务间通信以及与第三方系统集成变得更加容易。

  • 开源软件(Open Source)的统治地位:从操作系统(Linux)、数据库(PostgreSQL, MySQL)到开发框架(Spring, Jakarta EE)和工具(Git, Jenkins),开源软件已经成为现代软件开发的基石。

  • 关注全栈(Full-Stack)与专业化并存:市场既需要能够处理从前端到后端再到数据库的全栈工程师,也需要深度专精于某一领域(如前端、后端、数据科学、AI/ML)的专家。


2. 简述JavaEE的组件和功能

       Java EE(现为 Jakarta EE)是一个包含众多技术规范的平台,旨在简化企业级应用的开发。其核心组件和功能可以分为几个层次:

  • Web 层组件

    • Jakarta Servlet: 处理 HTTP 请求和响应的核心组件,是构建 Web 应用的基础。
    • Jakarta Server Pages (JSP) / Jakarta Standard Tag Library (JSTL): 用于创建动态 Web 页面的技术。JSP 允许在 HTML 中嵌入 Java 代码,JSTL 则提供了一套标准标签库(如循环、条件判断)来简化页面开发。
    • Jakarta Server Faces (JSF): 一个基于组件的 UI 框架,用于构建 Web 用户界面,简化了事件处理和状态管理。
    • Jakarta WebSocket: 支持在客户端和服务器之间建立全双工、低延迟的通信通道。
  • 业务逻辑层组件

    • Enterprise JavaBeans (EJB): 提供强大的后端服务,如事务管理、安全控制、并发处理和远程调用。虽然在现代开发中部分功能被更轻量的框架替代,但它依然是重量级企业应用的选择。
  • 数据与集成层组件

    • Jakarta Persistence (JPA): 对象关系映射(ORM)规范,允许开发者以面向对象的方式操作数据库,而无需编写繁琐的 SQL。
    • Jakarta Transaction (JTA): 提供分布式事务管理能力,确保跨多个资源(如数据库、消息队列)的操作要么全部成功,要么全部失败。
    • Jakarta Messaging (JMS): 用于在不同应用组件之间进行异步、可靠的消息传递。
    • Jakarta RESTful Web Services (JAX-RS): 用于轻松创建和消费 RESTful Web 服务的 API。
    • Jakarta SOAP with Attachments (JAX-WS): 用于创建基于 SOAP 协议的 Web 服务。
  • 基础与通用组件

    • Contexts and Dependency Injection (CDI): 一个强大的依赖注入框架,用于解耦组件,是现代 Jakarta EE 应用的核心。
    • Bean Validation: 提供了一套通过注解来定义和验证对象属性约束的机制(如 @NotNull, @Size)。

3. 简述JavaEE的容器类型和主要功能

       Jakarta EE 应用运行在特定的运行时环境中,即容器(Container)。容器负责管理组件的生命周期并提供各种底层服务。主要有两种容器类型:

  • Web 容器 (Web Container)

    • 主要功能:这是所有 Jakarta EE 服务器的基础。它负责管理 Web 组件(如 Servlet 和 JSP)的生命周期,将 HTTP 请求映射到具体的 Servlet,管理用户会话(Session)等。
    • 例子:Apache Tomcat、Jetty。
  • EJB 容器 (EJB Container)

    • 主要功能:它提供了一个更强大的环境来运行业务逻辑组件(EJB)。它提供的服务包括:
      • 事务管理 (Transaction Management): 自动处理数据库事务。
      • 安全管理 (Security Management): 声明式的角色和权限控制。
      • 并发管理 (Concurrency Management): 安全地处理多线程访问。
      • 远程访问 (Remote Access): 允许不同 JVM 中的客户端调用。
    • 注意:一个完整的 Jakarta EE 服务器(Full Profile)会同时包含 Web 容器和 EJB 容器。

4. 符合Jakarta EE Platform规范的服务器有哪些?

       Jakarta EE Platform(也称 Full Profile)是功能最全的规范,要求服务器实现所有 Jakarta EE API。以下是一些通过官方认证的服务器:

  • GlassFish (Eclipse Foundation 的参考实现)
  • WildFly (由 Red Hat 支持)
  • Open Liberty (由 IBM 支持)
  • Payara Server (基于 GlassFish 的商业支持版本)
  • Oracle WebLogic Server
  • IBM WebSphere Application Server

你可以在 Jakarta EE 官网上查看最新的兼容性列表:jakarta.ee/compatibility/


5. 符合Jakarta EE Web Profile规范的服务器有哪些?

       Jakarta EE Web Profile 是一个功能子集,专注于构建现代 Web 应用,不包含 EJB 等一些传统的重量级组件。它更轻量,启动更快。

  • Apache TomEE (在 Tomcat 基础上集成了其他 Jakarta EE 组件)
  • WildFly (WildFly 也提供 Web Profile 的配置)
  • Open Liberty (同样提供 Web Profile 配置)
  • Payara Micro (Payara 的微服务版本)
  • Piranha (一个非常现代和模块化的实现)

       特别说明Apache Tomcat 本身只是一个 Servlet 容器,它只实现了 Servlet, JSP, WebSocket 等少数几个规范,因此它不符合 Web Profile 规范。但是,像 Apache TomEE 这样的项目会在 Tomcat 的基础上添加所需的库(如 CDI, JPA, JAX-RS),使其成为一个完整的 Web Profile 服务器。


6. 市场上流行的Jakarta EE服务器主要有哪些?请比较它们的优缺点。

       以下是当前最流行的几个服务器的比较:

服务器优点缺点最佳使用场景
WildFly功能全面 (Full Profile),性能优异,由 Red Hat 强大支持,管理控制台功能强大,文档完善。相对 Open Liberty 来说,资源占用稍多,配置稍显复杂。需要完整 Jakarta EE 功能、寻求稳定企业级支持的传统和现代应用。
Open Liberty极其轻量,启动飞快 (秒级),高度模块化,配置简单(单个 XML 文件),非常适合云原生和微服务。默认功能较少,需要按需添加特性,社区相对 WildFly 稍小。微服务、容器化环境、快速开发迭代以及对启动速度有极高要求的场景。
Payara基于 GlassFish,提供商业支持和增强功能,社区活跃,有专门的微服务版本 (Payara Micro)。免费社区版的更新节奏可能不如商业版。从 GlassFish 迁移、需要商业支持或对增强功能(如 JCache)有需求的企业。
Apache TomEE在 Tomcat 基础上构建,对于熟悉 Tomcat 的开发者来说学习曲线平缓,轻量且稳定。功能更新可能滞后于 WildFly 和 Open Liberty,社区活跃度适中。希望在熟悉的 Tomcat 环境中使用 Jakarta EE Web Profile 功能的团队。
GlassFish官方参考实现,最标准、最纯粹,适合学习和研究 Jakarta EE 规范。缺乏商业公司的强力支持,在生产环境中的使用率已逐渐被其他服务器超越。学习、教学、原型验证和非关键性内部应用。

7. 主流的Jakarta EE应用开发工具有哪些?

       开发 Jakarta EE 应用通常会用到以下工具组合:

  • 集成开发环境 (IDE):

    • IntelliJ IDEA Ultimate: 目前被广泛认为是 Java 开发的最佳 IDE,对 Jakarta EE、Maven/Gradle、服务器集成等提供了顶级的支持。
    • Eclipse IDE for Enterprise Java and Web Developers: 传统的、免费且强大的开源 IDE,拥有庞大的插件生态系统。
    • Visual Studio Code: 通过安装 Red Hat 的 Extension Pack for JavaCommunity Server Connectors 等插件,VS Code 也可以成为一个轻量级的 Jakarta EE 开发环境。
  • 构建工具:

    • Maven: 最主流的 Java 项目构建和依赖管理工具,通过 pom.xml 文件进行配置。
    • Gradle: 更现代、更灵活的构建工具,使用 Groovy 或 Kotlin DSL 进行配置,在 Android 和许多新项目中非常流行。
  • 应用服务器: 即上面提到的 WildFly, Open Liberty, Tomcat 等,在开发过程中直接集成在 IDE 中进行部署和调试。

  • 数据库:

    • H2 Database / Derby: 轻量级的内存/文件数据库,非常适合开发和测试阶段,无需单独安装。
    • PostgreSQL / MySQL: 生产环境中广泛使用的开源关系型数据库。
  • 其他工具:

    • Docker: 用于创建和管理开发、测试环境,确保环境一致性。
    • Postman / Insomnia: 用于测试 RESTful API 的强大工具。

文章转载自:

http://s3kpSZVS.fLmxL.cn
http://yLzTkbyi.fLmxL.cn
http://8HYz21RW.fLmxL.cn
http://MDCxt7rR.fLmxL.cn
http://0OXCeD06.fLmxL.cn
http://lHJFErDA.fLmxL.cn
http://XB4j2BAI.fLmxL.cn
http://RNAqzEfJ.fLmxL.cn
http://3OpzJLNk.fLmxL.cn
http://qujTo2NT.fLmxL.cn
http://pnXc9l1F.fLmxL.cn
http://C0qhbFlB.fLmxL.cn
http://KqTKY2wF.fLmxL.cn
http://Z8di7Suk.fLmxL.cn
http://QHoeNKBK.fLmxL.cn
http://OV8zOlf1.fLmxL.cn
http://MB7KunuP.fLmxL.cn
http://myY5ebEo.fLmxL.cn
http://xNutai2l.fLmxL.cn
http://3dZmv16v.fLmxL.cn
http://kjjaCFOE.fLmxL.cn
http://jZmhkGJ5.fLmxL.cn
http://f4UiiwFx.fLmxL.cn
http://vFYompXd.fLmxL.cn
http://R8Ooy85w.fLmxL.cn
http://x8W4g1tz.fLmxL.cn
http://Qpqj7g8w.fLmxL.cn
http://PDPUuJeZ.fLmxL.cn
http://UI8vezIQ.fLmxL.cn
http://y5ojwJYG.fLmxL.cn
http://www.dtcms.com/a/372656.html

相关文章:

  • 【基于YOLO和Web的交通工具识别系统】
  • Python跳过可迭代对象前部元素完全指南:从基础到高并发系统实战
  • vue2(7)-单页应用程序路由
  • 布隆过滤器:快速判断某个元素是否存在
  • 信号衰减中的分贝到底是怎么回事
  • [光学原理与应用-461]:波动光学 - p光,s光; o光,e光;分别是什么意思,有什么关联?
  • python---静态方法和类方法
  • Nature子刊-香港大学研发新型陡峭山坡巡检无人机,破解密林细小障碍物规避难题
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘setuptools’问题
  • 基于 Django+Vue3 的 AI 海报生成平台开发(海报模块专项)
  • 机器学习-K-means聚类
  • 维度跃迁:当万物皆成电路,智能将从“拥有”变为“存在”
  • 前端:最新最全的JavaScript知识汇总,持续更新......
  • PO BAPI bapi_po_create1
  • 当前车载测试的难点分析
  • Pyhton基础之多继承、多态
  • AOSP Framework开发的一些超方便的快捷命令
  • 移动高清盒子CM311-5-内存大小区分参考指南
  • 在 VirtualBox 虚拟机中安装 Fedora CoreOS 操作系统
  • 【SLAM论文笔记】SplaTAM论文小结
  • shell编程之文本三剑客grep、sed、awk
  • 开始 ComfyUI 的 AI 绘图之旅-文生图(一)
  • 有哪些任务可以使用无监督的方式训练深度学习模型?
  • 从零开始构建图注意力网络:GAT算法原理与数值实现详解
  • FastAPI基础
  • 通过SSH来推送本地文件夹到Github
  • 风锐统计——让数据像风一样自由!(十)——关联研究全自动分析
  • AutoGen快速入门
  • v$lock 查找锁 locked objects ORA-54 dblink
  • Daily算法刷题【面试经典150题-2️⃣】