需要帮助定义/理解Java EE“;堆栈";

需要帮助定义/理解Java EE“;堆栈";,java,jsf,jakarta-ee,icefaces,Java,Jsf,Jakarta Ee,Icefaces,LAMP是一个从左到右(从下到上)定义为Linux/Apache/MySQL/PHP的堆栈,或者您可以将其视为操作系统/Web服务器/数据库/脚本语言。在通用形式下,您可以在任何操作系统(如Windows而不是Linux)中弹出,以获取WAMP或放入其他数据库,甚至可以运行PHP以外的其他语言,如Ruby。然而,一般来说,每样东西你只有一件。一个数据库、一个操作系统、一个web服务器,尽管您的应用程序可能会通过有限的更改从一个堆栈过渡到另一个堆栈 我已经在LAMP堆栈中进行了几年的开发,并且一直

LAMP是一个从左到右(从下到上)定义为Linux/Apache/MySQL/PHP的堆栈,或者您可以将其视为操作系统/Web服务器/数据库/脚本语言。在通用形式下,您可以在任何操作系统(如Windows而不是Linux)中弹出,以获取WAMP或放入其他数据库,甚至可以运行PHP以外的其他语言,如Ruby。然而,一般来说,每样东西你只有一件。一个数据库、一个操作系统、一个web服务器,尽管您的应用程序可能会通过有限的更改从一个堆栈过渡到另一个堆栈

我已经在LAMP堆栈中进行了几年的开发,并且一直在阅读JSF以及组件库RichFaces和IceFaces。用支持AJAX的组件构建网站UI的整个想法,并获得各种漂亮的东西,比如验证,以及免费的凌乱AJAX调用,真是令人兴奋

问题是我很难理解什么是泛型组件构成了JavaEE堆栈。根据我的研究,似乎可以从以下类别构建“Java EE堆栈”:

JavaEE应用服务器——JBoss、Tomcat

数据库-MySQL,Oracle

数据库抽象-Hibernate,JPA

支持JSF Ajax的组件库-ICEFaces、RICHFaces

我觉得我肯定错过了一些东西。我不确定缝线或弹簧在哪里合适。另外,Hibernate是否使用JPA?或者JPA是一个功能齐全的API,我可以自己轻松使用?容器放在哪里?我可以在JavaEE应用服务器上运行一个容器吗?还有,Maven在这一切中处于什么位置?据我所知,它似乎不是web服务堆栈的一部分,而是部署前使用的工具

我一直在阅读Rainer Eschen的IceFaces1.8,这个图是由他作为一种JavaEE堆栈呈现的。我猜AppFuse对于JavaEE就像XAMPP对于LAMP一样。这是真的吗?如果有人能分解下图中的各个部分,以及它们是如何组合在一起的,那将非常有帮助

我知道这是很多不同的问题。如果我没有问一些你认为我应该知道的问题,请随意扔掉,或者如果我说的不正确,请纠正我!JavaEE堆栈,以及与之配套的所有部分,至少可以说是吓人的。我只是想在潜入并开始建造任何东西之前,对高层视图有一个很好的把握


谢谢

是的,你发布的图表很吓人,但你不必使用所有这些东西。这并不都是必要的

如果你是新来的,保持简单和积极向上

以下是最基本的必备物品:

  • servlet和JSP。这意味着要在servlet/JSP引擎(如Tomcat或Jetty)上部署。servlet是HTTP侦听器,它处理传入的请求,与后端类协作以实现它们,并将响应路由到适当的下一个视图
  • JSP是生成HTML的模板解决方案。您应该只使用JSTL(JSP标准标记库)编写这些代码。没有脚本
  • 用于UI的HTML、CSS和JavaScript。基于web的UI需要这些
  • 用于关系数据库访问的JDBC
  • 就这样。用这些你可以走很长的路

    我喜欢春天,但第一次吞下它是很难的。做一两个没有它的站点。你会更好地理解事物,更欣赏春天为你所做的一切

    您不需要JSF。我认为这是一种正在衰落的技术。我个人看到的一个JSF/Faces应用程序绝对是乱七八糟的。你可以用日晷来计时页面加载。我并不认为它是一个大赢家,尽管它被吹捧为JavaEE标准。你打算在移动用户界面上运行JSF吗?我不这么认为

    UI是使用HTML、CSS和JavaScript编写的,它们与后端的服务通信。这些服务可以是REST-ful servlet

    Hibernate是一种对象关系映射技术。如果没有对象模型,则不需要Hibernate。如果对象和表之间有简单的一对一关系,则不需要Hibernate。如果您喜欢将存储过程作为关系数据库的接口,则不需要Hibernate。如果您不介意编写一点SQL并映射结果,那么就不需要Hibernate。JPA也是如此,Hibernate是实现JPA的一种方法,它从Hibernate中吸取了很多经验

    从这些开始,并建立起来。如果你试图一下子学会所有你引用的东西,你将一事无成。

    那张图表不是一个好例子

    这可能有帮助(或没有:):

    • JavaEE是一个托管运行时系统。(LAMP没有这种顾虑。)

    • JavaEE使用组件容器通用架构(LAMP不定义显式组件容器API)

    • JBoss、Glassfish等应用服务器提供JavaEE容器。(Tomcat不支持完整的Java EE堆栈。Tomcat和Jetty仅提供web容器(或根据最新规范提供的web配置文件)

    • 注意,javaeeweb容器(servlet)比完整的javaee堆栈简单得多,但基于相同的体系结构方法

    • JavaEE的Web组件(基本上)是servlet和过滤器。各种高阶框架(如Faces)都构建在该体系结构之上。JavaEEWeb容器既相对简单又非常有效。这是最接近灯的东西

    • javaee的企业组件(由GlassFish等javaee应用服务器支持)是各种类型的无状态、有状态和持久性组件(在javaland中称为“bean”)

    • Hibernate是一种ORM,在完整JavaEE(例如EntityBeans)的上下文中是多余的。通常,J