昨天我看到一个关于 Java Server Faces 2.0 的演示文稿,看起来确实令人印象深刻,尽管我目前是一名快乐的 ASP.NET MVC / jQuery 开发人员。我最喜欢 JSF 的是大量支持 AJAX 的 UI 组件,它们似乎使开发速度比使用 ASP.NET MVC 快得多,尤其是在 AJAX 重的网站上。集成测试看起来也很不错。
由于演示文稿只强调了 JSF 的优点,我也想听听另一面。
所以我的问题是:
首先,“Java EE”自 2019 年 9 月起更名为“ Jakarta EE ”,从版本 8 开始。历史上,“J2EE”一词也涵盖了 1.2 到 1.4 版本。“Java EE”涵盖了版本 5 到 8。
我究竟需要学习什么?
我假设您已经熟悉HTML、CSS和JS等客户端技术,所以我不会详细介绍。我还假设您已经熟悉基本的 Java。遵循 Oracle 的The Java Tutorials,如果可能的话,还可以获取OCP 书籍或课程。
然后可以从 JSP/Servlet 开始学习 Java Web 开发的基本概念。好的教程可以在[Jakarta EE 教程第 18 章“Jakarta Servlet 技术”]中找到。关于 JSP 最重要的一点是,自 2003 年以来,官方不鼓励使用<%scriptlet在 JSP 文件中编写纯 Java 代码%>。 的教程都应该跳过,因为它们肯定会让你陷入学习不良实践的恶性循环。
<%
%>
Tomcat 似乎是一个很好的 Java 网络服务器。
这是。然而,它的能力有限。它基本上是一个准系统 servlet 容器,只实现了庞大的 Java EE API 的 JSP/Servlet 部分。如果您曾经想使用 EJB 或 JPA,那么您想选择另一个,例如WildFly、TomEE、Payara、Liberty、WebLogic等。否则您必须使用 Spring 而不是 Java EE。即不可能在不修改核心引擎的情况下将 EJB 安装在准系统 servlet 容器中,如果 Tomcat 基本上是在重新发明 TomEE。
我知道 ORM 有 Hibernate。
以前,在 J2EE 时代,JPA 不存在,EJB2 很糟糕,Hibernate 是一个独立的框架,经常与 Spring 结合使用以取代 EJB。自 Java EE 5 (2006) 中引入 JPA 以来,Hibernate 已成为 JPA 实现。您可以在Jakarta EE 教程第 VIII 部分学习 JPA 。此外,基于从 Spring 中吸取的经验教训,EJB3 得到了很大改进。
Java有MVC吗?JSP呢?MVC和JSP可以在一起吗?JavaBeans?
你可以,但是在将模型与视图绑定(转换、验证、更改侦听器等)时,这是对轮子的大量改造。Jakarta EE 的 MVC 框架称为JSF。在 Java EE 6 之前,它曾经在 JSP 上运行,这是一种相当遗留的视图技术。JSP 被Facelets取代。您可以在Jakarta EE 教程第三部分第 7-17 章学习 JSF 。顺便说一句,你也可以在 Tomcat 上使用 JSF,你只需要单独安装它。安装说明可以在Mojarra 主页找到. WildFly、TomEE、Payara、Liberty、WebLogic 等作为完整的 Jakarta EE 实现已经提供了开箱即用的 JSF(以及 CDI、BV、JSONP、JAX-RS、EJB、JPA 等),因此您不需要单独安装。
也许一本书涵盖了所有这些?
有几本书。我会建议从一本总体上关注 Jakarta EE的书开始,一本更关注 JSF的书,以及一本更关注 JPA的书。确保您选择涵盖该主题的最新书籍。首先调查最新的可用版本,然后确保所选书籍涵盖该版本。因此,当目前已经有 Jakarta EE 8 和 JSF 2.3 可用时,绝对不要选择 Java EE 5 或 JSF 1.0 左右的旧书。
最后但同样重要的是,请忽略由业余爱好者维护的代码片段抓取网站,这些网站主要关注广告收入而不是教学,例如 roseindia、tutorialspoint、javabeat、journaldev、javatpoint、codejava 等。它们很容易被干扰的广告链接识别/包含scriptlet的横幅和 JSP 代码片段。