JavaRush /Java 博客 /Random-ZH /喝咖啡休息#157。2022 年将 Java 用于前端 Web 应用程序

喝咖啡休息#157。2022 年将 Java 用于前端 Web 应用程序

已在 Random-ZH 群组中发布
来源:Nocodefunctions 我们提请您注意一篇有关使用 Java 开发独立 Web 应用程序的经验的文章。 喝咖啡休息#157。 2022 年将 Java 用于前端 Web 应用程序 - 1

Java 前端——这真的可能吗?

很多人认为使用Java进行前端开发根本不可能:毕竟Java是为后端设计的。是的,很久以前,Java applet 和 Java Webstart 允许您从浏览器运行 Java 应用程序。但这是古老的历史,和 Flash 插件一样古老。但即使没有小程序,也有一种使用 Java 作为前端的方法 - 这些是 JSP(Java 服务器页面),许多小学生在计算机科学课程中学习过它。然而,尽管 JSP 仍在一些 Java 书籍中讨论,但该技术自 2010 年代以来已被弃用。难道真的又是一条死路吗?还有一些框架允许 Java 开发人员使用 Google Web Toolkit(GWT,它也不是超级新)或通过J2Cl(也来自 Google)将其代码“转换”(以复杂的方式转换)为 JavaScript 。需要注意的是,GWT 和 J2Cl 并不适合初学者,它们是 Google 开发的更多企业工具,用于大型项目。

Java 前端的无名英雄:Jakarta Faces (JSF)

Java Server Faces (JSF),现在称为“Jakarta Faces”,至少从 2010 年代初期就已经存在。我总是感到惊讶的是,它鲜为人知,也很少被提及,因为这个框架可以轻松、快速、安全、可靠地开发 Web 应用程序。JSF 易于学习并充分利用 Java 生态系统。例如,以下是创建包含动态内容的网页的方法:
  • 创建一个 html 页面(扩展名为 .xhtml)。
  • 将 <head> 和 <body> html 标记更改为 <h:head> 和 <h:body> 标记。
  • 现在,要通过调用后端的某些属性来显示动态内容,只需将此代码放在主题标签之后和控制栏之间:

    #{backendscript.myText}
然后在后端创建一个 Backendscript.java 文件,添加一个名为String myText = "hi!welcome to my page!" 的变量 。它将显示在网页上。JSF 确实非常简单。由于Stackoverflow 上的许多问题、官方文档、几本书(这个链接,我也喜欢David Heffelfinger 的书),当然还有Youtube 视频,它得到了很好的记录。

JSF 复杂吗?它的优点是什么?

JSF 一点也不复杂。而且:
  1. 它与经典 Java IDE(NetBeans、IntelliJ IDEA 和 Eclipse)良好集成。每个 IDE 都提供:
    • 填写 Maven 配置模板的模板项目(顺便说一下,这非常简单)。
    • 调试工具(具有热重载功能,至少对于 NetBeans 而言)。
    • 适用于 Java 生态系统的强大自动完成、重构、导航和错误突出显示工具。IDE 可以提供有关您在 html 页面中提到的任何类的有用信息(例如上面提到的#{backendscript.myText})。HTML 页面实际上将与您的代码库的其余部分集成!
  2. 它可以非常轻松地处理 html 页面上的复杂代码变化。
    • 您是否需要通过简单的按钮单击来刷新页面的一部分?将更新属性添加到您的按钮,后跟要更新的组件的 ID。
    • 关于更新和动态内容:我真的很喜欢 JSF 的简单性:前端更新后端,更新自身,或者后端更新前端。所有这些都是 Web 应用程序的基本要求,它们都在这里。
    • 如果你希望用户能够下载一个或多个文件,并且有文件类型和大小的条件,只需在代码中添加一行明确的参数即可。
    • 需要制作多语言网站吗?将<f:view>标签添加到您的 html 中,然后在后端只需一行即可获取用户的语言。
  3. 您可以添加和混合 HTML 标签、JS 和 CSS 脚本,并且所有这些都经过 SEO 优化。
您可以完全控制 JSF 生成的 html,并且可以随时添加 html 和 js 代码。这使得与不了解或不关心 JSF 的设计人员和前端开发人员协作变得更加容易。当我使用 CSS 时,我得到了一位设计师的帮助,他可以处理我使用 JSF 创建的 HTML 页面,毫无困难地进行必要的更改。JSF 生成您可以在浏览器中查看和阅读的 HTML 代码。这对于使用常规开发工具进行调试并验证 SEO 操作是否正确实施非常有帮助。

Primefaces:大量免费 JSF 组件和主题列表

JSF 附带了一长串可立即使用的组件,这些组件可创建 html 页面的经典部分,因此您不必自己动手。例如,使用<h:dataTable>标记创建一个表,该表显示从后端加载的特定数据,而无需从头开始重新创建。还有一个更好的选择:Prime Tek 开发了一套名为Primefaces的开源组件。它们具有附加功能并具有多种优点。例如,只需使用 Primefaces <p:dataTable> 标记即可代替 <h:dataTable>。这将创建一个基本数据表,您可以在其中轻松添加列开关动态列或编辑表中的 功能。

但Java又慢又重?

1.Java慢吗?

不。有趣的是,像 React、Angular 和 Vue 这样的 JS 框架是在创建时承诺比 Java 中的 JSF 更快、更智能,因为它们将所有应用程序逻辑直接发送到站点访问者的浏览器。JSF 的工作方式有所不同:当用户调用页面(例如 https://nocodefunctions.com)时,后端应用程序仅生成该页面的 html 并将其发送回。这称为“服务器端渲染”(SSR)。实际上,单页应用程序可能需要用户花费很长时间来检索和加载构成整个应用程序的 JavaScript 文件。这可能会导致糟糕的用户体验(必须等待首页加载)和 SEO 问题。因此,Java 风格的服务器端渲染重新流行起来,因为它被认为在速度和性能方面优于客户端渲染。新的SSR 框架不断涌现,需要习惯客户端渲染的开发人员来处理和混合这两种不同的逻辑。

2.Java难吗?

不。部署 JSF 应用程序需要什么:
  • 应用程序本身。一个简单的 JSF“hello world”应用程序可能只有 10KB 或更小。
  • 如果您需要更高质量的组件,可选的是 Primefaces(如上所述)。这是额外的 4.5 MB
现在在服务器上运行它。为此,您需要:
  1. 在云中或其他地方拥有服务器。对于 Nocodefunctions (https://test.nocodefunctions.com) 的测试版本,我使用 Hetzner,在那里我以每月 4.15 欧元的价格租用了一台 2 GB RAM 的裸机服务器。我可以使用更少的 RAM,但我的应用程序提供了一些数据密集型服务,并且需要适合内存。nocodefunctions 的真实(非测试)版本在更大的服务器(也与 Hetzner 一起)上运行,以支持更多用户并行的数据密集型任务 - 每月费用不到 50 欧元。

  2. 您必须安装 Java。这是适用于 Mac、Win 或 Linux 的小于 200 MB 的单个文件下载,即使用于商业用途也是完全免费的。

  3. 您需要有一个 Java Web 服务器来运行它。很多。就我个人而言,我使用 Payara Micro(社区版),它是免费的,单个下载文件大小为 77MB。

  4. 启动您的应用程序。

结论:想想 Java!

我觉得有些程序员认为 Python、Ruby、PHP、NodeJS + React...是启动小型 Web 应用程序时的唯一选择。但现在我希望他们在下一个项目中也考虑使用 Java + JSF。
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION