QCon北京|3天沉浸式学习,跳出信息茧房。 了解详情
写点什么

Java 赢了很多小战役,但如何赢得这场艰苦卓绝的大战争?

  • 2020-11-29
  • 本文字数:1851 字

    阅读完需:约 6 分钟

Java赢了很多小战役,但如何赢得这场艰苦卓绝的大战争?

Java 的半年发布周期、令人兴奋的新特性为它赢得了很多小战役。然而,一场更大的战争正在逼近:浏览器战争。这是一场 Java 输不起的战争。


历史小回顾


在 90 年代末和 2000 年代,Java 在浏览器中占有举足轻重的地位。Applet 是直接运行在 Web 页面上的 Java UI——想象一下用于绘制图形和播放声音的画布,只是使用的是 Java API。Java Web Start 让你可以从浏览器启动完整的 Java UI。它们都可以与运行在 Java 应用服务器上的服务通信,获得完整的 Java 体验。实际上,是最初对客户端 Java 的喜爱促使人们尝试将 Java 放到了服务器端,然后才变得更加流行。


时间快进 20 年


然而,2020 年,情况变糟了。所有主流浏览器都禁用了对 Java(实际上还包括大多数非 JavaScript 技术)的支持。基于 Web 的前端通常是用 JavaScript 或者一些包装器(如 TypeScript)开发的。


不过,你仍然可以使用 Java 技术来开发网站,比如很多“官方”技术(如 JSP 和 JSF)。可惜的是,这些技术完全运行在服务器端。你可以使用 Java 库和业务逻辑生成页面,但一旦被发送到浏览器,它们就是静态毫无生气的。用户交互需要使用以下两个丑陋的方式:


  • 在客户端和服务器之间往返(速度慢,用户体验不好);

  • JavaScript 嵌入在 Java 生成的页面中。


有些团队完全放弃了 Java,使用 JavaScript 构建前端。在做出这个决定之后,有些人甚至研究了在服务器端运行 JavaScript 的解决方案。听起来是不是很熟悉?这就是 Java 曾经用来占领计算世界的方式。


赢得了很多小战役


幸运的是,Java 并没有停滞不前。Java Enhancement Process(JEP)保护 Java 不受官僚主义的侵袭,多年来对 Java 进行了大量改进,其中大多数都走在了 JavaScript 前面。


多亏了新的发布周期,现在每 6 个月就会发布一些特性改进。新的垃圾回收器、更容易使用的字符串和改进的线程都可以用于生产环境。但是,当你想知道这些创新中哪些是用于构建基于浏览器的应用程序时,很快就会意识到,Java 客户端的创新几乎已经停止了,至少官方渠道是这样的。


古话说,我们不想赢得小战役,却输掉了大战争。Java 如何再次突围?如何再次赢回客户端开发者?Java 如何防止其他技术利用前端优势来占领后端,就像 Java 曾经对其他技术所做的那样?


如何赢得这场战争


要赢得这场战争,Java 需要一个强大的客户端解决方案,让开发人员可以使用 Java 创建现代 Web 应用程序。这个解决方案需要能够利用现代 Web 技术、支持组件化、能够快速迭代开发、提供快速下载能力、具备高性能、可以很好地与其他 JVM 语言协作。那么,Java 到底需要什么?


Java 需要 TeaVM


TeaVM 是一种可以将 Java 类编译成 JavaScript 的转译器,可以让 Java 代码与 Web API 和 DOM 发生交互。它还提供了一个用于开发 Web 应用程序的框架,叫作 Flavour。TeaVM 和 Flavour 的一些强大的功能特性:


  • 通过类型安全的 Java 包装器使用大多数的 Web API;

  • 一个丰富的组件框架,通过可重用的组件来构建应用程序;

  • 大量的预构建组件;

  • 带有影子 DOM 和路由的单页面应用程序支持;

  • 简单、透明地调用 Web 服务。


如果你是一个正在构建基于浏览器用户界面的 Java 开发人员,TeaVM 就是为你准备的。TeaVM 应用程序主要可以分为两种风格:


  • 在画布上绘制整个 UI 的图形应用程序,只有很少的 HTML 或 CSS。这些应用程序可能需要 TeaVM。

  • 使用 HTML 和 CSS 的单页面 Web 应用程序。这些应用程序可以使用 Flavour 框架来处理路由、调用 REST 服务和 JSON 解析。


但也不一定非黑即白,也可以考虑混合的解决方案,比如:


  • 一个主要基于画布的应用程序,它也可以偶尔使用 Flavour 来显示其他 HTML 页面。

  • 主要基于 HTML 的应用程序,在某些页面上包含一个画布。


无论你选择哪种方式,都会发现,使用与后端相同的语言来开发客户端是一种真正解放的体验。你可以在整个应用程序中共享数据结构,使用 IDE 同时重构客户端和服务器端的接口和模型类,为整个产品使用相同的工具(构建工具、依赖管理工具、静态/动态分析工具)。生产力和开发人员的满意度得到了极大的提升。


如何前进


你现在就可以在你的项目中使用 TeaVM。它稳定,提供了文档,并且在 TeaVM 网站和其他地方都提供了示例代码


最重要的是,TeaVM 需要你的支持和推广。不要只是讨论和提倡遗留的 Java Web 技术,让我们一起来让 Java 继续保持常青 25 年——请推广和使用 TeaVM!


如何参与?


  • 构建你的第一个TeaVM项目,只需要两个命令。

  • 阅读开发人员讨论 TeaVM 和 Flavour 的论坛帖子

  • 深入源代码。TeaVM 和 Flavour 代码结构组织得很好,对你来说非常有用。在创建你自己的 JavaScript 映射和 Flavour 组件时,项目代码库中有大量示例可以参考。


感谢你阅读本文,让我们一起来赢得这场战争!


原文链接:


https://frequal.com/java/JavaWinningBattlesNowForTheWar.html


2020-11-29 15:001541

评论 2 条评论

发布
用户头像
这不是扯淡么
2020-11-30 10:22
回复
+1
2020-11-30 17:30
回复
没有更多了
发现更多内容

PaddleNLP上新!浪潮信息源2.0全面接入,大模型生态加速进化!

百度Geek说

百度 数据 大模型

macOS Big Sur(苹果macos11系统)安装包分享及安装教程

Rose

火山引擎数据飞轮线上研讨会即将开启,助力消费品牌双十一造爆款

字节跳动数据平台

如何处理海量数据?基于Milvus向量数据库的高度可扩展性

Zilliz

人工智能 Milvus 大模型 Zilliz 向量数据库

京东商品详情API详解:全面掌握返回值字段

代码忍者

API 接口 pinduoduo API

鸿蒙网络编程系列34-Wifi热点扫描及连接示例

长弓三石

DevEco Studio 开发实例 HarmonyOS NEXT 网络与连接

1024|京东零售技术人的N种可能

京东零售技术

1024

拼多多详情API接口的获取与应用

科普小能手

拼多多 API 接口 API 测试 pinduoduo API 拼多多数据

非凸科技银牌赞助GOSIM CHINA 2024,并受邀出席Rust分论坛

非凸科技

开源 rust

NocoBase 本周更新汇总:子表格支持分页、工作流优化等

NocoBase

开源 低代码 无代码 产品更新

增长在流量规则巡检的探索实践|得物技术

得物技术

测试 质量保障 流量巡检

多模态大模型活动 | 使用 PAI×LLaMA Factory 搭建文旅问答机器人

阿里云大数据AI技术

人工智能 LLM PAI 问答机器人

WiFi7 Module Main Chips: QCN9274, QCN6274, QCN6224, QCN9224-how to choose?in-Depth Analysis them

wifi6-yiyi

5G wifi 6G

Sketch:专业设计工具首选,成就非凡视觉

Rose

如CGI一般的分子动力学,让科学家看到了3D渲染后的分子运动「影片」

新消费日报

鸿蒙网络编程系列35-通过数据包结束标志解决TCP粘包问题

长弓三石

DevEco Studio 开发实例 HarmonyOS NEXT 网络与连接

Visual Studio Code:专业编程工具首选,成就卓越代码!

Rose

生成式AI时代的内容安全与系统构建:合合信息文档图像篡改检测创新方案

海拥(haiyong.site)

人工智能

Taro 鸿蒙技术内幕系列(一):如何将 React 代码跑在 ArkUI 上

京东零售技术

taro 鸿蒙 前端

AlDente——Mac 电池管理大师,续航无忧!

Rose

【论文速读】| 攻击图谱:从实践者的角度看生成式人工智能红队测试中的挑战与陷阱

云起无垠

ai2021安装包 及 Illustrator 2021安装教程

Rose

Stability AI一口气推出3款图像生成模型系列!升级版Claude 3.5 Sonnet能像人类一样操控电脑|AI日报

可信AI进展

商场LED透明屏:选择参考分析

Dylan

品牌 LED display LED显示屏 零售电商市场

CST如何选择时域求解器的频率范围

思茂信息

cst使用教程 电磁仿真 频率

Spring高手之路23——AOP触发机制与代理逻辑的执行

砖业洋__

spring aop aop代理

浅谈活动中台系统技术债管理实践

vivo互联网技术

技术债 效能提升 项目质量 系统稳定

MicrosoftOffice2019密钥 office2019激活教程

Rose

Navicat Premium 数据库管理 --Navicat Premium中文汉化包

Rose

Photoshop 2024对电脑配置有什么要求?ps2024破解安装包分享

Rose

高效的剪辑和渲染能力 Final Cut Pro X简体中文安装包

Rose

Java赢了很多小战役,但如何赢得这场艰苦卓绝的大战争?_编程语言_Andrew Oliver_InfoQ精选文章