2。1eTS物种起源
2.1.1 JavaScript
JavaScript (简称"JS") 是一种轻量级解释型的编程语言(代码不进行预编译)。 JavaScript最初受Java启发而开始设计的,目的之一就是"看上去像Java",因此语法上有类似之处,一些名称和命名规范也借自Java。
JavaScript是一种属于网络的高级脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。JavaScript也可以用于其他场合,如服务器端编程(Node.js)。
这里提供一个简单的Java代码和JavaScript代码示例对比,一个经典的新闻类。Java代码:
使用IDEA构建了一个基本的SpringBoot项目,[源码见:https://gitee.com/cloudev/harmonyos3/tree/master/2.1/Java/Demo]
先建立一个News的瘦实体类News.java:
(2.1JavaDemosrcmainjavacomexampledemoNews.java)package com.example.demo; public class News { /** * 私有变量声明 */ private String title;// 新闻标题 private String content;// 新闻内容 /** * 构造函数 * @param title * @param content */ public News(String title, String content) { this.title = title; this.content = content; } /** * Getter、Setter * @return */ public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } }
然后在入口类DemoApplication.java中调用:
(2.1JavaDemosrcmainjavacomexampledemoDemoApplication.java)package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); News news = new News("HarmonyOS 3.0什么时候发布", ""); news.setContent("据华为官方的计划,会在2022年7-9月,正式发布HarmonyOS 3.0,到时候就是ArkUI eTS大放异彩的时机了,所谓"好饭不怕晚"。"); System.out.print(news.getTitle() + ":" + news.getContent()); } }JavaScript代码:
源码见:[https://gitee.com/cloudev/harmonyos3/tree/master/2.1/Js/Hello]
先建立一个News的类News.js,无需声明私有变量title和content:
(2.1JsHelloentrysrcmainjsdefaultmodelNews.js)export class News { /** * 构造函数 * @param title * @param content */ constructor(title, content) { this.title = title; this.content = content; } /** * Getter、Setter */ getTitle(){ return this.title; } setTitle(title) { this.title = title; } getContent(){ return this.content; } setContent(content) { this.content = content; } }
在index.js中调用该类的方法:
(2.1JsHelloentrysrcmainjsdefaultpagesindexindex.js)import {News} from "../../model/News.js" export default { data: { title: "", content: "" }, onInit() { let news = new News("HarmonyOS 3.0什么时候发布", ""); news.setContent("据华为官方的计划,会在2022年7-9月,正式发布HarmonyOS 3.0,到时候就是ArkUI eTS大放异彩的时机了,所谓"好饭不怕晚"。"); console.log(news.getTitle() + ":" + news.getContent()); this.title = news.getTitle() } }2.1.2 TypeScript
TypeScript(简称"TS") 是微软开发的一个开源的编程语言,通过在JavaScript的基础上添加静态类型定义构建而成。TypeScript通过TypeScript编译器或Babel转译为JavaScript代码,任何现有的JavaScript程序可以运行在TypeScript环境中。 实际上,TypeScript 是 JavaScript 的一个超集,所以TypeScript是对JavaScript兼容的。
TypeScript 起源于使用JavaScript开发的大型项目 。由于JavaScript语言本身的局限性,难以胜任和维护大型项目开发。因此微软开发了TypeScript ,使得其能够胜任开发大型项目。
借上述Java项目,建立一个News.ts文件,代码如下:
(2.1JavaDemosrcmainjavacomexampledemoNews.ts)export class News { /** * 私有变量声明 * @private */ private title: string; private content: string; /** * 构造函数 * @param title * @param content */ constructor(title:string, content:string) { this.title = title; this.content = content; } getTitle(){ return this.title; } setTitle(title: string): void{ this.title = title; } getContent() { return this.content; } setContent(content: string): void { this.content = content; } }2.1.3 eTS
方舟开发框架"eTS"是基于TS扩展的声明式开发范式的一套开发极简、高性能、跨设备应用设计研发的UI开发框架,支持开发者高效的构建跨设备应用UI界面。
使用基于TS扩展的声明式开发范式的方舟开发框架,采用更接近自然语义的编程方式,让开发者可以直观地描述UI界面,不必关心框架如何实现UI绘制和渲染,实现极简高效开发。从组件、动效和状态管理三个维度来提供UI能力,还提供了系统能力接口,实现系统能力的极简调用。
方舟开发框架定义了一些具有特殊含义的装饰器,用于装饰类、结构、方法和变量。例如@Entry、@Component、@Preview、@Builder、@Extend、@State、@Prop、@Link等,后面章节我们会详细讲解这些装饰器的用法。
先建立一个News的类News.ets,代码和上面的News.ts一模一样:
源码见:[https://gitee.com/cloudev/harmonyos3/tree/master/2.1/ArkUI/Hello]
(2.1ArkUIHelloentrysrcmainetsdefaultmodelNews.ets)export class News { /** * 私有变量声明 */ private title: string; private content: string; /** * 构造函数 * @param title * @param content */ constructor(title: string, content: string) { this.title = title; this.content = content; } getTitle(){ return this.title; } setTitle(title: string): void{ this.title = title; } getContent() { return this.content; } setContent(content: string): void { this.content = content; } }
在页面中调用:
(2.1ArkUIHelloentrysrcmainetsdefaultpagesindex.ets)import {News} from "../model/News.ets" @Entry @Component struct Index { private title:string = "" private content:string = "" aboutToAppear() { let news = new News("HarmonyOS 3.0什么时候发布", "") news.setContent("据华为官方的计划,会在2022年7-9月,正式发布HarmonyOS 3.0,到时候就是ArkUI eTS大放异彩的时机了,所谓"好饭不怕晚"。") console.log(news.getTitle() + ":" + news.getContent()) this.title = news.getTitle() this.content = news.getContent() } build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Text(this.title) .fontSize(50) .fontWeight(FontWeight.Bold) Text(this.content) .fontSize(20) }.width("100%").height("100%") } }
JS、TS和eTS的关系,如下图所示:
所以,熟悉JS开发或TS开发的同学,都能很快上手eTS开发。
有一位网友留言,说自己是做Java后端开发的,不知道学鸿蒙开发难不难。我想这也是很多做Java后端开发的同学关心的问题,写作本篇也是为了打消大家的顾虑。首先,JS(JavaScript)的语言高度类似Java,而TS(TypeScipt)是JS的超集,完全兼容JS,而eTS是华为在TS基础上做的进一步扩展,所以,做Java开发后端的同学完全可以轻松上手eTS ArkUI的鸿蒙开发,不要被内心的假想敌打败,行动起来吧,跟着教程学习,相信大家会轻松掌握!2.1.4 关于仓颉、欧拉
众所周知,华为这几年遭遇了欧美的科技垄断和打压。那么华为会倒下吗?不会!不仅不会,还会越来越强大!
鸿蒙系统不仅已经用在了各类智能设备中,而且搭载总量超过了3亿台。 鸿蒙系统很快在谷歌安卓与苹果ios这两座大山的夹缝中拿到了16%以上的市场份额, 这个表现要远超曾经的谷歌安卓与苹果ios,这意味着鸿蒙已经安全度过了新兴操作系统的"生死线"。余承东曾官宣表态:"鸿蒙,成了!"
鸿蒙系统的成功问世,只是华为战略布局中的一环。其实, 早在二十多年前,任正非就曾去日本请教过日本经营之圣稻盛和夫。稻盛和夫曾对任正非说:"华为现阶段虽然发展得不错,但核心技术大多来自欧美,如果有天他们不授权了,你该怎么办?"
正所谓一语惊醒梦中人 。任正非回到公司后就定下了华为未来的发展战略:不惜代价投入重金研发,要将核心技术掌握在自己手里。于是,就有了著名的华为备胎计划。
硬件的心脏是芯片。而芯片方面,华为海思承载华为先进芯片的设计。华为海思麒麟芯片已广泛用于华为手机、平板电脑等设备中。"鸿蒙开发之南拳北腿"的南拳篇中,我会推出基于海思芯片设计的高性能物联网开发板系列教程。
操作系统方面,华为除了推出面向物联网的鸿蒙操作系统,还在服务器操作系统领域推出了华为欧拉。 华为对欧拉的定义是数字基础设施的生态底座。 这类数字基础设施指的是电力、能源、交通、港口等关键的基础设施,涉及到许多民众生活的方方面面。欧拉将在这些基础设施当中形成强大的系统运行能力。凭借支持多个芯片架构,将来会与鸿蒙实现架构互联互通。
开发语言方面,除了当前的Java UI、JS UI和eTS ArkUI,华为自研的编程语言"仓颉"已经在2022年4月份正式开启了内测。 目前已经有部分开发者拿到源代码。 此前, 不少人猜测"仓颉"是中文编程。根据参与内测的开发者用户表示,华为自研的仓颉编程语言最大的特点在于简单易上手,但并非是中文编程。这个其实也容易理解, 电脑指令输入英文的效率要比汉字效率高很多,因为汉字存在多音字,这种特性导致在输入命令的时候会容易出错,并且执行效率也慢。仓颉语言可以帮助鸿蒙和欧拉实现生态上的高度互通,最大程度的减少其割裂感,提升开发者的效率 。
作为一门新的编程语言,仓颉如果要获得众多开发者的接受,那么大概率不会设置太高学习曲线。当初,微软为了让众多开发者接受".NET",也推出了"C#",由于Java一直以来都是编程语言的常青树,所以"C#"的语法习惯高度类似Java。截止2022年4月,全球编程语言前三名是Python、C和Java。Python作为当前开发AI人工智能的最佳语言,由于在科学计算等方面有大量类库,而受追捧。但是,如果选择作为后端主要语言,我觉得不是最佳选择,因为作为一种解释性语言,Python在大型项目的高并发等方面并没有优势。我更情愿使用Java的Spring Cloud架构作为后端项目的技术选型,如果有用到推荐算法或其它一些AI方面的功能,使用Python提供API给Java项目调用。在无服务器服务Severless中,使用Python写相应接口方法也是一个不错的选择。至于说C语言,更多用在面向硬件方面的编程,我们在鸿蒙智能硬件开发系列课程(南拳篇)中会介绍C/C++的开发技能。如果,留意一下华为官方提供的很多技术文档及SDK示范源码,会发现其中Java方面的是最完善的。这个不难理解,因为企业级开发中,采用Java作为后端选型的用户是最多的,同时,华为的开发工程师中也有相当一部分是擅长Java技术栈的。那么,我大胆猜测,仓颉编程语言会在习惯上,对Java技术栈的开发者学习曲线较低,或者非常相似。
前几天,有个网友给我留言,担心仓颉会取代eTS。我觉得这个担心倒大可不必。我个人认为,eTS ArkUI作为华为主推的鸿蒙开发新兴语言,目前尚处于Beta阶段,华为不应该拿出另一个语言与它竞争,"自家产品打架"这个毫无意义。我比较认同另一个网友的观点,他在给我的留言中表达"仓颉用于鸿蒙PA后端"的观点。eTS ArkUI和仓颉应该是前后端组合拳,这样配合更加合理。由于目前仓颉的更多细节尚未透露,大家对它有什么想法,可以在下面留言讨论。
综上,我将华为技术战略布局绘图如下:
上述表达仅为笔者个人观点,非华为官宣。如有不同观点,欢迎大家踊跃发言。
露营赏画围炉煮茶春节期间,蒸湘区这些地方可打卡游玩红网时刻衡阳1月19日讯(通讯员谢睿)春节,是团圆的日子。家人团聚在一起,大家谈谈一年的变化,聊聊心中的苦闷,听听收获的成绩。趁着7天小长假,除了拜年外,还可以带着家人到郊野走走,
爱了!彩虹串起佛冈龙山乡村振兴示范带在极具岭南特色的佛冈县龙山镇上下岳古村,一道道彩虹出现在乡野道路上。由红黄绿喷涂的交通标线,以路引景,以景串线,远远望去如同彩虹一般,把周边村落的秀美风光串联起来,成为龙山镇民安片
速领!明天1000,佛山新春景区消费券来了!领券攻略领券时间第一批次1月20日1000至2月5日2359第二批次2月8日1000至3月5日2359第三批次3月8日1000至3月31日2359领券渠道云闪付APP领券方式方法一
澳门旅游业春意渐浓免核酸通关助推入境旅客量大增,有酒店房间已排到6月底南方财经全媒体记者田静实习生邓雅文发自澳门免核酸通关以来,游客真的多了很多,大三巴氹仔官也街这些地方都是人头攒动的。澳门导游庄伟杰告诉南方财经全媒体记者。自1月8日起,由内地香港或
醉忆江南,嘉兴西塘中国这么大,我想去看看。带你去一个你曾经去过或者没去过的地方。醉忆江南,嘉兴西塘古镇西塘位于浙江省嘉兴嘉善,古名斜塘。春秋战国时期就是吴越两国的相交之地,有吴根越角和越角人家之称。
广州过年,这些活动等你来解锁白云山云台花园举办郁金香主题花展,市民欢乐打卡。广州日报全媒体记者杨耀烨摄广州日报讯(全媒体记者全杰通讯员林园轩)热闹又温馨,喜庆又甜蜜,昨日,市内各大公园景区商场和酒店发布了春节
寨堡式建筑群汕头潮南东里古村风水灵气古寨正门在古代潮汕地区,因为地处省尾国角又历遭兵灾之劫,潮汕人聚寨而居成为普遍现象,因此有十乡九寨之说。在广东省汕头市潮南区陇田镇东仙社区居委会就有一处规模宏大的寨堡式建筑群东里寨
舍与得百善孝为先,孝敬父母的人是有福报的人家是最安全的港湾百善孝为先,尊老爱幼是中华民族的传统美德,羊有跪乳之恩,牛有舔犊之情,大地乃万物之源,父母是生命之本。人生于世,长于世,源于父母。百善孝为先,孝敬父母是最大,你陪我
金融科技疯狂的算法交易,仿佛是古罗马的竞技场,算法是角斗士一本研究苍蝇遗传学亚马逊为什么定价为2400万美元2011年4月初,加利福尼亚大学伯克利分校的进化生物学家迈克尔艾森登录到亚马逊网站,想要为自己的实验室购买一本课外书。他要找的书是
2023春节过后即将发布的几款新机,哪款是你心中的白月光?春节到来,各位的手机是否已经按耐不住换手机的冲动了呢?但是先等等,因为春节过后即将发布几款新的手机,快来看看有没有你中意的吧!一1三星GalaxyS23系列预计将于2月1日发布,三
小井盖,大视界以色列人祖鲁尼和他的终极井盖新华社耶路撒冷1月19日电(记者吕迎旭张天朗)为什么大多数井盖是圆的?井盖是不是都是金属做的?井盖上的图案有什么含义?7年前的一天早上,以色列人埃利祖鲁尼在特拉维夫雅孔公园慢跑时,