java dart_忘记Dart –您现在可以执行显示HTML的Java代码

java dart

我们采访了创新者Anton Epple,以了解有关HTML和Java之间的新链接以及他在JavaOne年度会议上期待的内容的更多信息。

你能告诉我们一些吗?

安东·埃普尔(Anton Epple):两年前,我注意到JavaScript正在兴起,甚至Java程序员如果想在客户端的浏览器中执行一些代码,也不得不使用它。 对我来说,JavaScript只是另一种汇编语言。 人们不应该直接使用它,就像他们不再直接使用x86指令集一样。 用某种真实的语言编写并生成JavaScript很好,但是直接编码JavaScript毫无意义。 它是用于简单脚本编写的语言。

用JavaScript编写的所有大字体很快就会成为WONTA:只需编写一次,再也不要碰。 因此,我开始探索用Java代替JavaScript会怎么做,但仍然保留HTML。 许多JavaEE框架也尝试隐藏JavaScript,但是我对纯客户端(一种无服务器的应用程序)更感兴趣。 类似于Cordova,但无需使用JavaScript编写代码。

您是如何创建API的?

与其他语言相比,Java以其冗长而著称。 我为自己设定的一个目标是创建一个API,该API可使Java中的程序比JavaScript中的同类程序短。 这并不容易,但是我相信我对Java API设计的了解非常了解(甚至还写了几有关该主题的 ),因此我利用了Java API设计人员拥有的最强大的工具:注释处理器。 最后,我相信我实现了目标。 使用HTML / Java API编写的应用程序通常比原始的基于JavaScript或Dart的示例短。

我需要避免的一件事是经典JavaBean模式及其获取器和设置器的冗长性。 我设法用@Model注释做到了。 只需定义属性及其类型,即可在编译期间生成整个JavaBean类。 最初,这可能会让人感觉有些颠倒,但是人们已经习惯了它,并发现它富有成效。 顺便说一句,之前已经有一些尝试这样做(想到Lombok项目),但是我的解决方案不需要任何技巧。 它是由标准Javac编译的100%有效的Java代码。 另一个问题是有效地表示HTML页面并使之“生动”。

选项很少,但我最喜欢的是基于基因敲除.js,后者是四个最受欢迎JavaScript库之一。 它允许通过绑定到模型来注释HTML元素(请参阅其优秀的文档 ),并且只要模型发生更改,就可以相应地更新DOM树。

公爵

当然,淘汰赛期望使用JavaScript进行建模,所以我的主要任务是确保可以用Java编写该模型,并生成其余的代码。 我再次使用@Model 注释 。 顺便说一句。 该实现不是特定于Knockout的,而是在Java / JavaScript桥中插入了SPI,因此人们可以为自己喜欢的技术实现绑定。

目前,我知道controls.js的绑定-一种很有前途的触摸式功能强大HTML小部件,因此人们可以在Java应用程序中使用这些控件,而不使用带有组合键HTML。 这两种情况使我相信,应该可以集成其他绑定技术,例如angular.js(另一个流行JavaScript框架)。 几乎每个JavaScript应用程序都执行的最后一种操作是使用JSON –将数据发送到服务器并以通常异步的方式获取答复。

经典方法需要一些回调接口,但是我决定使用另一个注释解决该问题: @OnReceive 。 它再次生成样板代码,因此,与服务器之间来回传输数据仅需几行代码。 实际上,当比较原始JavaScript示例的大小时,这就是新HTML / Java API真正擅长的领域。 用于异步REST或WebSocket通信的Java代码比其JavaScript计数器部分短。

您声称可以在所有地方部署这些应用程序吗?

真正。 尽管HTML / Java API主要是为NetBeans设计的,但它被创建为尽可能“轻巧”-它具有尽可能小的运行时依赖关系-它不依赖于任何其他库(而是将SPI公开给允许使用不同的实现),因此不需要执行功能齐全的Java SE-它可以在其他Java虚拟机上运行。 即使那些仅支持现在称为Java的子集的组件。

我作为一个简单示例使用的扫雷游戏可作为NetBeans的模块在AppStoreGoogle Play上购买 ,也可直接在浏览器中运行。

真的到处都是吗?

真。 您所需要的就是执行Java代码和显示HTML的能力。 当然,这并不意味着您当前的基于Swing的应用程序将在任何地方运行,但是如果您使用HTML / Java Maven原型或适当的NetBeans IDE 向导创建应用程序并在考虑到可移植性的前提下进行开发,则可以确保它可以在任何地方运行。 首先,我们可以使用JavaFX的Web视图在桌面上运行。

它对于调试(Java和DOM结构)以及快速开发应用程序非常有用。 准备就绪后,您可以将应用程序发布为独立的JAR或将其嵌入到现有的JavaFX(以及Swing)应用程序中。 这是我们现在在NetBeans中使用HTML / Java的方式,也是我想将HTML / Java集成到Eclipse中的方式。

杜克1

手机还是浏览器?

Android很简单。 有可以执行Java代码的Dalvik VM,还有可以显示HTML的WebView小部件。 连接它们“只是”必要的。 好吧,说“只是”有点夸张,因为我花了许多不眠之夜去做:Java和Web视图之间的通信在Android上是异步的,特别是递归调用变得棘手。 但是现在它已经准备好了,而且由于有了HTML / Java TCK (包含数百个测试),我们知道它的行为与其他系统相同。 我以为iOS会是一个挑战,但是由于有了RoboVM项目,这并不难。 RoboVM接收Java字节码并将其转换为LVVM汇编程序代码(与Objective-C所针对的汇编程序相同),结果产生了相同的本机代码,但是可以用Java编写代码,而无需遭受Objective-C的困扰。

除此以外,RoboVM还提供对本机iOS小部件(包括WebView组件)的绑定。 绑定Java和JavaScript是“仅”必要的。 这次更容易了,因为Web视图的调用在iOS上是同步的,并返回结果值。 然后我们有了浏览器。 显示HTML当然很容易,我们被HTML页面所包围。 但是我们应该如何执行Java? Java插件已被Firefox和Chrome禁止使用,无论如何它都感觉有些重量级。 让我们编写一个使用字节码并生成JavaScript的虚拟机! 这实际上是我开始的地方:我编写了自己的VM,名为Bck2Brwsr 。 两年前,就在JavaOne之后,我设法在HTML页面中执行了第一个应用程序– 一个简单的计算器

这怎么可能?

虚拟机采用字节码并将每个指令转换为JavaScript代码段。 转换通常在桌面上进行时提前进行,但是Bck2Brwsr VM也可以进行即时编译(是的,可以直接在浏览器中加载JAR文件及其类)。 整个方法有其局限性(例如没有线程),但是VM足以执行HTML / Java应用程序。

当我谈论我的Bck2Brwsr VM时,人们常常认为这是一个疯狂的主意。 可能,但是编写JVM并不困难(更大的问题是实现库),而且我不是唯一尝试这样做的人。 编写自己的TeaVM的 Alexey Andreev与我联系。 他非常友善,可以为HTML / Java API支持提供必要的支持,因此扫雷游戏也可以在其VM上执行。 我相信这是HTML / Java API的可移植性的一个很好的例子。

那么这是否意味着Dart对于Java程序员来说已经过时了?
我会这样说。 上周五,在奥地利维也纳举行了JavaDay会议。 它从谈论Dart和Angular(Java会议!)开始,并以一种看起来像一种语言的语言而不是另一种汇编器(如JavaScript)编写单页HTML应用程序的能力给观众留下了深刻的印象。 我可以感觉到他们在想:“我应该学习Dart来做这么酷的事情吗?”。
因此,我借用了HTML&Dart源代码,并在接下来的三个小时内将它们重写为HTML / Java。 轮到我时,我可以站在观众面前并告诉他们:“嘿,您不必学习Dart,坚持使用Java,使用HTML / Java API和Knockout绑定,您也可以做到这一点!” 我想引起了我的注意并赢得了掌声。
您对今年的JavaOne最期待什么话题?
我必须承认,我不知道。 我非常忙于自己的演讲和演示,因此我还没有时间查看时间表。 我只想遇见有趣的人,并度过愉快的时光。 同时,我将讨论API设计[9月30日星期二,12:30 – 13:30,希尔顿–帝国宴会厅A],这通常是一个引起关注的主题。 我说服RoboVM的Niklas Therning制作了有关替代虚拟机的BOF [9月29日,星期一19:00 – 19:45,Moscone South – 305],我真的很期待:我设想了两个极客,他们会亲自回答诸如以下的问题:“您是如何实现弱引用,线程,类加载,绑定到本机方法等的” 并显示VM内部。
然后,当然还有HTML / Java和周围的生态系统,它们由Toni Epple命名为“ DukeScript”。 Toni将进行演讲[9月29日星期一,14:30-15:30希尔顿金门大桥4/5],我们将做一个教程[9月30日,星期二,8:30 – 10:30:希尔顿– A广场]好。 我对此感到有些紧张-我知道HTML / Java技术具有巨大的潜力,但是我不确定它是否会引起足够的关注。

翻译自: https://jaxenter.com/forget-dart-can-now-execute-java-code-displays-html-111438.html

java dart

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值