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

时间:2011-06-21 23:17:48

标签: java jsf java-ee icefaces

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

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

问题是我很难理解通用组件构成Java EE堆栈的原因。根据我的研究,您似乎有以下类别可以从中构建“Java EE堆栈”:

Java EE Application Server - JBoss,Tomcat

数据库 - MySQL,Oracle

数据库抽象 - Hibernate,JPA

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

我觉得我肯定错过了一些东西。我不确定Seam或Spring适合这个。 Hibernate也是使用JPA的东西吗?或者JPA是一个功能齐全的API,我可以轻松使用它?容器在哪里适合这个?我可以出去找一个容器在我的Java EE应用服务器上运行吗?此外,Maven在哪里适合所有这些?据我所知,它似乎不是Web服务堆栈的一部分,而是部署之前使用的工具。

我一直在阅读Rainer Eschen的ICEfaces 1.8,这个图由他作为一种Java EE堆栈呈现。我的猜测是AppFuse是针对Java EE的,因为XAMPP是针对LAMP的。真的吗?如果有人可以分解下图中的各个部分以及它们如何组合在一起,那将非常有用。

ICEcube Architecture Diagram http://img191.imageshack.us/img191/336/icecubearchitecture.png

我知道这些是各种各样的问题。如果我没有问你认为我应该知道的事情,请随意把它丢掉,或者如果我说错了,请纠正我! Java EE堆栈以及与它一起使用的所有部分至少可以说是令人生畏的。我想在深入了解并开始构建任何东西之前,先掌握高级视图。

谢谢!

2 个答案:

答案 0 :(得分:10)

答案 1 :(得分:5)

是的,您发布的图表令人生畏,但您无需使用所有内容。这不是全部必要的。

如果你是新手,请保持简单并积累。

这是最开始的必备单品:

  1. Servlet和JSP。这意味着在像Tomcat或Jetty这样的servlet / JSP引擎上进行部署。 Servlet是HTTP侦听器,它处理传入的请求,与后端类协作以实现它们,并将响应路由到适当的下一个视图。
  2. JSP是一种用于生成HTML的模板解决方案。您应该只使用JSP标准标记库JSTL来编写它们。没有scriptlets。
  3. 用于界面的HTML,CSS和JavaScript。您需要这些用于基于Web的UI。
  4. 用于关系数据库访问的JDBC。
  5. 就是这样。你可以用这些方法走很长的路。

    我喜欢春天,但第一次吞下去是很多的。没有它的地方做一两个网站。你会更好地理解事物并欣赏Spring为你做的更多。

    您不需要JSF。我认为这是一种衰落的技术。我个人看到的一个JSF / Faces应用程序绝对是免费的。你可以用日..加载页面。我不认为它是一个大赢家,尽管它被吹捧为Java EE标准。你会在移动UI上运行JSF吗?我不这么认为。

    使用HTML,CSS和JavaScript与后端服务进行对话来编写UI。这些服务可以是REST-ful servlet。

    Hibernate是一种对象关系映射技术。如果您没有对象模型,则不需要Hibernate。如果对象和表之间有简单的一对一关系,则不需要Hibernate。如果您希望存储过程作为关系数据库的接口,则不需要Hibernate。如果您不介意编写一些SQL并映射结果,则不需要Hibernate。同样适用于JPA - Hibernate是实现JPA的一种方式,它从Hibernate中获得了很多。

    从这些开始并建立起来。如果你试着学习你所引用的所有东西,你就永远无法到达任何地方。