如何看待鸿蒙应用开发框架采用JavaScript作为开发语言?-程序员宅基地

技术标签: java  jni  编程语言  人工智能  软件开发  

喜闻乐见,其实使用 JavaScript 作为应用开发语言并不是第一家,比如 JerryScript 就是为了三星自家的 IoT 手表开发的,国产 RT Thread 也用了 JS 做 GUI,还有 MongooseOS 也是一套 JavaScript 的操作系统,当然还有我最喜欢的 YodaOS 也是基于 JavaScript 的。

 前端(广义前端) 

1

前端(广义前端)应用编程语言这个生态位目前就那么几种语言: Javascript/TypeScript、Java、OC、Kotlin、Swift.、Dart, 先不说其他因素,日中后四个都是单个商业公司控制的,你说鸡蒙拿来用0k不ok呢? Java虽然有ICP,但Oracle...你懂的。所以选择JS简直是必然的,(顺便,华为在2019年12月成为Ecma标准组织成员,并加入了门TC39——

JS标准委员会。

 鸿蒙

2

鸿蒙作为个正在全新的系统, 定位的目标是要在多种场景多种设备上运行。

一个全新的系统,需要得到足够多的开发者支持资源,那么需要对开发者友好,需要谨慎选择,什么样的开发语言受众最多?

什么样的开发语言能支持在多种设备多种场景下面运行?

我们不难分析出java和javascrip是相对比较好的选择,毕竟这两大操作语言有足够的开发者,开发者不需要再去学习一门新的语言,降低了开发者的成本,更容易得到开发者支持。

 

那为什么是javascript呢? 

java语言已经被安卓广泛使用,如果坚持选择java的话,那么和安卓很难拉开差距,可能一不小心就走到安卓的老路上去了,另外,一个熟悉java的开发者,一个熟悉安卓的开发者,放弃成熟的安卓生态不玩,为什么要来陪个各种不确定各种都不清楚的全新系统玩?

对自己有什么好处?

毕竟开发者是要恰饭的,没有收益甚至短期内看不到收益的话,靠热情是很难维持的。

相比javascript来看,就要好的多,首先javascript语言还没有 个成熟的软件生态支持,最重要的是javascript语言有足够多的开发者,基本上传统的页面开发者都能写些javascript的代码,至少开发者基数够大。

 

拥有了强大的开发者基数资源,再加上对于一个迟迟没有平台生态兑现的语言,此时华为鸿蒙如果能给出个类似苹果安卓的方案,那么将会得到大量熟悉的javascript开发者支持,毕竟他们已经期盼好久,看着java,看着OC语言,它们都有了前途,而javascript还没有 一个生态让他们来发光发热获取收益。

 开发者 

3

开发者可能会因为一种新的生态时冲动进入这个市场,而能让开发者坚持留下来的还是要生态本身强大,能赚到钱,一个能让开发者赚到钱的生态不在乎使用什么语言,哪怕语言再难学,只要利益足够大,学的人都会蜂拥而至但是如果赚不到钱, 看不到收益,那就前途未卜了。

是时候该学习javascript了。

 缺陷

4

当然,JS也有些缺陷。而日等虑现在各移动平台除了之外也都有自的饮定语言,所以长远看,(光使用) J5对于鸿蒙可能是不够的。鸿蒙在大内存设备(如号)上应会支持Java,但战略上我认为平台必须要有自研语言。而且方舟编译器和MaplelR的特点就是多语言联台编译,所以华为完全可能会出自研语言,让象同时支持5 lava和传言中的 0面」。如果仅仅考悦的需求,我个人实际上是比较倾向于我剪JS/TS的语义和语法来做一个高效的可直接编评到native的语言,不过从一些传闻来看,「仓板」 可能不像TS而更类似Swift。

 

●●●

鸿蒙作为个正在全新的系统, 定位的目标是要在多种场景多种设备上运行。

一个全新的系统,需要得到足够多的开发者支持资源,那么需要对开发者友好,需要谨慎选择,什么样的开发语言受众最多?

什么样的开发语言能支持在多种设备多种场景下面运行?

我们不难分析出java和javascrip是相对比较好的选择,毕竟这两大操作语言有足够的开发者,开发者不需要再去学习一门新的语言,降低了开发者的成本,更容易得到开发者支持。

 支持

5

支持 JS 的原因,JS 是浏览器界的汇编语言,而浏览器目前有成为第一大人机交互接口的趋势。

1.JS 生态圈目前来看形式很好,未来也是第一梯队。

2.JS 语言发展迅速,开源社区支持广泛,上手入门门槛远低于 Java 和 Native 语言。后期希望可以原生支持 TypeScript

3.JS + WebAssembly 性能还是不错的,未来如果能加上 V8 速度会更快,不知道华为未来是否有能力自己做一个 VM 支持 WebAssembly

4. Write once,run everywhere。目前来看是对 JS + WebAssembly 最好的描述。

作为一个热爱JavaScript的曾经的程序员,我当然支持鸿蒙采用JavaScript作为开发语言,我还不了解细节,但是我估计JavaScript是被作为应用层面的编程语言来使用,换句话说,记忆鸿蒙平台来开发应用,你可以用JavaScript,但是,如果你要做一些底层的开发,你可能还需要用其他编程语言。

为什么这样呢?

因为JavaScript就是为了『应用开发』而设计的,不是为了『底层开发』而设计的。

举个简单例子,JavaScript语言本身没有线程(Thread)的概念(Chrome的worker不是语言特性),我知道很多人都诟病这一点,但是,我一直认同JavaScript就不该有线程,因为JavaScript是用来开发应用的,一个应用开发者为什么要知道线程的存在呢?

对于很多本身有线程概念的编程语言,实际上诱惑了程序员去玩线程这种潘多拉魔盒,千万不要觉得自己会线程就牛逼了呀,很多人把线程玩拉胯了!

如果你现在用Windows上的Outlook,把Outlook关闭再重新打开,用任务管理器看一下Outlook占多少个线程,至少几十个,也就是说,Outlook什么都不敢都有几十个线程存在,每个线程还要维持自己的stack,这……不是玩拉胯了是什么?

JavaScript坚持自己是一个为了『应用开发』的语言,不是一个全能语言,所以才能繁荣昌盛这么久。

这就是我的一点看法。

祝JavaScript随着鸿蒙再一次大放光彩吧。

  开发者全社区 

5T技术资源大放送!包括但不限于:Android,Python,Java,大数据,人工智能,AI等等。关注公众号后回复「2T」,即可免费获取!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xhmj12/article/details/108744092

智能推荐

K210 图像识别 (加训练模型)_k210图像识别-程序员宅基地

文章浏览阅读3.4w次,点赞85次,收藏742次。以管理员的方式运行下载模式 高速改为低速模式_k210图像识别

解决Unity开启多个协程卡顿问题_unity 多个协程-程序员宅基地

文章浏览阅读3.1k次。Unity开启多个协程往往造成卡顿,因此需要每完成一个协程再新开启一个协程。for (int i = 0; i < result.result.Count; i++) { try { BaseStation responses = JsonMapper.ToObject<BaseStation>(JsonMapper.ToJson(result.result[i])); ..._unity 多个协程

spring+SpringMvc+Mybaits配置多个数据库_springmvc+mybatis配置多个数据库-程序员宅基地

文章浏览阅读410次。一、配置文件二、创建一个实体类,切换数据库三、切换数据库的代码_springmvc+mybatis配置多个数据库

前端框架们_阿里 前端框架 乌米-程序员宅基地

文章浏览阅读675次。我司打算搞个地图应用,领导发给我一份ppt,里面有个前端的技术架构图:what!前端技术都进化得这么复杂啦?就搞一个前端,至于用到这么多框架?就问你晕不晕!底部的es6,fetch是基础的语法,这个没什么好讲的。arcgis jsapi,是地图服务接口,也没什么好说的。webpack,打包工具,还行吧。顶部的echarts,经常用,很好用,不错。但ant design是蚂蚁金服的东东,与r..._阿里 前端框架 乌米

Turn on ClearType。打开ClearType看英文资料不再那么费眼。-程序员宅基地

文章浏览阅读64次。下面是微软提供的在线打开ClearType 网址,装好插件之后按提示一步一步的点下去。发现还是比较爽的。呵呵~http://www.microsoft.com/typography/cleartype/tuner/Step1.aspx转载于:https://www.cnblogs.com/zwwon/archive/2007/07/10/812598.html..._chrome 英文和数字显示cleartype

jQuery.template.js 简单使用-程序员宅基地

文章浏览阅读125次。之前看了一篇文章《我们为什么要尝试前后端分离》,深有同感,并有了下面的评论:我最近也和前端同事在讨论这个问题,比如有时候前端写好页面给后端了,然后后端把这些页面拆分成很多的 views,有时候还会在这些 view 中写一些 c# 代码,突然有一天前端页面的样式出错了,但前端那里并没有问题,然后后端把前端叫过来,说你在我这里调吧,因为你没有后端的调试环境,然后前端就会很不爽,然后。。。你懂的!..._/template/pc/skin/js/jquery.js

随便推点

《鸟哥的Linux私房菜》第四版导学_好了a18第四-程序员宅基地

文章浏览阅读1.1w次。鸟哥的Linux私房菜0、计算机概论0.1、电脑:辅助人脑的好工具(什么是电脑?什么是计算机a3)0.1.1、电脑硬件的五大单元(电脑硬件大致可分为三个部分b3)(什么是CPU a4)(CPU主要的组成部分b4)(算术逻辑单元的功能c4)(控制单元的功能d4)(CPU读取的数据来源e4)(电脑硬件的五个组成部分f4)(数据在内存流动的基本知识g4)0.1.2、一切设计的起点:CPU架构(常见的两种CPU架构a5)(世界上使用最广的CPU b5)(常见的RISC指令集CPU c5)(常见的CISC指_好了a18第四

卡莱特led显示屏调试教程_卡莱特A接收卡调屏步骤-程序员宅基地

文章浏览阅读3.8k次。卡莱特5A接收卡调屏步骤卡莱特5A接收卡支持千兆网卡和发送卡两种发送方式,两种方式在5A接收卡的设置方面步骤相似,本文将讲述在千兆网卡发送条件下,5A接收卡的参数设置步骤。一、硬件连接1、发送卡连接图详见《卡莱特发送卡设备连接操作》2、千兆网卡连接图千兆网卡连接拓扑图千兆网卡硬件连接注意事项:a)电脑网卡必须是千兆网卡;b)电脑千兆网卡驱动必须安装正确;c)千兆网卡与5A接收卡、5A接收卡之间的网..._卡莱特指示灯

react Link跳转无效_React Native开发之react-navigation详解-程序员宅基地

文章浏览阅读299次。众所周知,在多页面应用程序中,页面的跳转是通过路由或导航器来实现的。在0.44版本之前,开发者可以直接使用官方提供的Navigator组件来实现页面的跳转,不过从0.44版本开始,Navigator被官方从react native的核心组件库中剥离出来,放到react-native-deprecated-custom-components的模块中。 如果开发者需要继续使用Navigator,则需要..._react navigate(-1) url不生效

python倒计时60,Python微项目分享之重要事件倒计时-程序员宅基地

文章浏览阅读109次。作者:JiawuZhang出品:JiawuLab(ID:jiawulab)微项目系列是JiawuLab原创栏目,每期选取一个自创项目或发现有趣的项目,进行代码、逻辑分析,达到python学习目的。大家好,我是JiawuZhang,本期微项目是——事件倒计时。项目介绍“11月11日0点0分0秒!”你是不是也在等着这个时间?看看电视,玩玩手机,刷刷购物车,只为等着这个时间到来。图片来自网络我老婆也是这..._python倒计时60秒

Could not connect to https://mirrors.tuna.tsinghua.edu.edu.cn/anaconda/pkgs/free/noarch/_could not connect to mirrors.tuna.tsinghua.edu.cn-程序员宅基地

文章浏览阅读5k次。解决方法:删除 .condarc文件 。 .condarc以点开头,一般表示 conda 应用程序的配置文件,在用户的根目录 (windows:C:\users\username\,linux:/home/username/)。但对于.condarc配置文件,是一种可选的(optional)运行期配置文件,其默认情况下是不存在的。 ..._could not connect to mirrors.tuna.tsinghua.edu.cn

MAC安装git的三种方式-程序员宅基地

文章浏览阅读1.7w次,点赞7次,收藏25次。以上是在MAC操作系统中安装Git的三种不同方式。Homebrew是最方便的方式之一,但如果您不想使用Homebrew,则可以选择从官方Git网站下载安装程序或使用Xcode Command Line Tools安装Git。无论您选择哪种方法,都应该能够很容易地安装和使用Git。_mac安装git

推荐文章

热门文章

相关标签