Kotlin:Java程序员的新宠?

发表时间: 2018-07-18 17:41

现在技术每天都在发展,开发框架和库的新版本层出不穷,支持的功能也越来越多。目前最流行的一个是编程语言Kotlin,另一个是JS库React Native。Kotlin是一种静态类型的开源编程语言,是Android移动应用开发方面的一颗耀眼的新星。React Native是个JavsScript库,可以用于创建Android、iOS和UWP上的原生应用——所以是时候比较下哪个更好用了。

React Native是什么?

React Native是个JavsScript库,是React家族的新一代成员,用于创建用户界面。它由Facebook和社区共同开发,最初是用在Instagram上。

它发布已经五年了,最新的稳定版发行于2017年11月28日。通过React Native,你可以创建Android、iOS和UWP上的原生应用。React Native最大的好处是,用Objective-C或Java建立的应用和React Native建立的应用几乎没有区别——所以也可以用它代替Kotlin。

但就像任何语言一样,React Native也有优缺点。

React Native的优点

高效率

如果能迅速看到做出的界面效果,那么设计和布局的效率就会更高。正因为如此,React Native有个非常好用的功能叫做“热加载”,它能让代码中的改动立刻反映到iOS和Android应用中。就像预览功能一样!

这个功能可以将修改代码后的等待时间降到零,也能节约开发时间。

性能

React Native使用原生的控件和模块,这样能提高性能。

React Native与iOS或Android的目标(原生)组件交互,将代码直接、独立地渲染成原生API。这样做使得它运行在UI之外的另一个线程上,从而能提高性能。关键之处是,React使用原生API。像使用WebView渲染代码等其他解决方案虽然可能有各自的优点,但都会牺牲性能。

不断增长的社区

上面说过,React Native是个开源项目,也就是说任何人都可以为这个框架做贡献。这也意味着你有更多的途径获得那些大牛程序员的经验,如果遇到任何问题,那么很有可能从社区和专家那里得到帮助。

现成的组件能提高开发速度

React Native的另一个强大的功能就是“现成的组件”。你不需要从头自己写组件,React Native已经提供了一堆组件供你使用。这些组件非常适合制作各种简单功能,这让开发过程更简单、更快。

省钱

React Native不仅能节省时间,还能省钱。

除了缩短开发过程之外(也是另一种React省钱的方式),React Native可以让JavaScript开发者针对多个操作系统创建应用,并把原生代码的必要性降低到最小。

这种方法更便宜,更节省预算,因为不需要为不同的目标设备雇佣不同的开发者或开发团队,一个开发者就能开发两个平台。也就是说,在一个应用上投入更少的资源和成本,同时缩短开发进程。

更小型的团队

在上一条的基础上,如果一个开发者能同时开发iOS和Android,那么就能实际上减小团队的大小。除了不需要学习两种不同的语言之外,它也能让团队小型化。

与Android、iOS各一个团队相比,只拥有一个React Native团队可以促进更好的沟通。选择React Native,最大的需求就是一个好的JavaScript开发者,它就能同时为两个平台(iOS和Android)编写代码。

的确有一些情况下,那些需要更多原生功能的应用会用到原生开发者的帮助,但大多数情况下,一个小团队就够了。小团队管理起来更容易。

可靠、稳定的应用

用React Native创建的应用无需担心它的稳定性和可靠性。它的数据绑定非常简单,其数据流禁止子元素影响到父元素的数据。如果开发者想要改变任何对象,他必须修改对象的状态,并相应地进行更新,也就是说只有允许改变的组件才会被更新。像Facebook、Instagram、Airbnb、Skype和许多大公司都在使用React Native!这件事本身就说明React Native创建的应用质量、可靠性和稳定性都很好。

支持多个操作系统,只需少量原生代码

让一个应用在多个操作系统上运行的功能非常好。先不说这样做的简单性,因为你可能并不会用到React Native的所有高级特性,至少你只需写一个应用就能得到两个。

我认为这必须是React Native的好处之一。

比混合原生应用更好

React Native是真正的原生应用,而不像其他混合工具,它们只是提供一个原生的壳,里面还是基于浏览器的应用而已。由于React Native使用的是原生控件,最终产品的外观会非常真实,就像是真正使用原生技术创建的一样。如果你不知道某个应用是用什么技术构建的,你就完全没办法分辨出一个应用是用React Native构建,还是用Android或iOS自己的语言构建。

React Native的缺点

现成控件的小集合

现成控件是React Native最重要的优点之一。

但很可惜它只包含少量的几个控件。它仍是个非常新的开发框架,尽管现成控件的数量以后会有大幅度增加,但目前控件的数量还非常少。因此开发者只能用它创建非常简单的应用。

需要原生代码

本文前面提到过,在使用React Native开发时可能依然需要少量的原生代码。这似乎有些矛盾,因为对于使用React Native开发的人来说,选择React Native的最初目的可能就是避免编写Android或iOS的代码。因此这一部分也必须留出预算,特别是当应用需要访问设备的摄像头或其他板载硬件的时候。极少数情况下,这些原生代码的工作量甚至会抹杀React Native带来的好处,如小型团队、节省时间、节约成本等。

应用程序性能不如纯粹的原生应用

如果只是个小应用,那完全没问题,你能享受到所有React Native的好处。但如果需要高级功能,那么性能就比不上为各个平台专门创建的应用了。

组件质量

前面说过为数不多的一些现成组件。但这并不是死胡同,因为还有各种第三方组件库可供选择。但第三方组件的质量和可靠性就得凭运气了。由于这些组件不是官方开发的,它们可能会包含大量的bug和小问题。改正这些问题可能会花费大量的时间,可能自己从头开始写一个还更省时间,这再次抹杀了React Native跨平台的优势。

陡峭的学习曲线

如果你不熟悉React框架和JavaScript,那么学习React Native可能会有点困难,特别是与其他跨平台开发方式相比。JSX是个JavaScript语法扩展,可以在JavaScript中混合HTML。这对于一般人来说并不好理解,因此它的学习曲线很陡峭,会打击学习的积极性。

JavaScript基础库导致的低安全性

我们知道React Native是个JavaScript库。如果你想在需要极高安全性的应用上使用React Native,如银行移动应用或个人财务引用,就需要格外注意细节问题,因为JavaScript的脆弱性广为人知。必须非常小心那些可能会对应用的核心功能造成伤害的恶意代码。

特别是在使用任何第三方扩展的时候。

内存管理

同样,由于React Native是基于JavaScript的,它并不适合需要大量计算的应用。从内存使用和管理的角度来看,应用的性能和速度会降低,而且浮点数计算的处理更没有效率。

与React Native对比,我们来看看Kotlin的优缺点。

Kotlin是什么?

Kotlin是Google为Java虚拟机创造的编程语言,由Google提供支持,JetBrains负责开发。这种语言非常高效,而且为Android开发者面临的各种问题提供多种解决方案。Kotlin是一种静态类型的开源编程语言,非常适合服务器端Web应用开发。它能减少bug,提高代码可读性,缩短开发时间,是Android移动应用开发方面的一颗耀眼的新星。

由于它还很新,许多人还不信任它的社区支持情况,但JetBrains(Kotlin的开发者)的官方文档非常完善,而且结构清晰。因此任何人都很容易学习Kotlin。

但Kotlin是否能比React Native更好?我们来看看。

Kotlin的优点

易维护性

Kotlin由JetBrains支持,而JetBrains正是最好的IDE的开发者。因此JetBrains不可能会放弃对Kotlin的支持。而且,Kotlin已经被多种开发环境支持,包括Andorid Studio。因此如果你选择Kotlin,就等于选择了可能在未来被多种工具和IDE支持的巨人。

更少的代码

考虑下编写代码。像写任何其他东西一样,一条铁律就是“写得越少,犯错越少”。Kotlin的代码不仅非常精确,而且非常清晰。这样犯错误的可能性就更小,从而带来更稳定的产品代码。只需写少量代码就能达到相同的功能。

可读性

Kotlin是一门成熟的语言,它最初出现于2011年,在最终发布之前已经经历了多个测试阶段。它是由程序员开发的编程语言,而它的开发者们已经为开发者们解决了很多问题。他们在最新的版本中解决的问题之一,就是他们让最新版本与前面的所有版本兼容。在Android上要想兼容所有旧版本是我遇到的最痛苦的问题,所以相信我,Kotlin值得信赖。

兼容现有代码

Kotlin与Java的互操作性是我推荐Kotlin的另一个理由。Kotlin能与Java合作得非常好,包括所有相关的工具和框架,从而提供了非常丰富的生态系统。

那这与Kotlin和React Native的比较有什么关系?

对于初学者而言,Java学习资料和在线帮助非常丰富。任何用Kotlin做不到的事情都可以用Java实现。有人说这是个新的学习曲线,而我认为这是个Kotlin建立伟大的开发者社区的绝佳机会。

为什么?因为喜欢Java的人可以没有任何难度地迁移到Kotlin,从而为Kotlin社区做出贡献。由于Java和Kotlin代码有互操作性,你总会找到解决办法。

而React Native就没有这么幸运了。

Kotlin的缺点

团队培训

对于不熟悉Java的人(许多人认为自己熟悉,但其实并没有),我觉得Kotlin是个缺点。毕竟Kotlin和Java之间有一些区别,因此对于他们来说还是有学习曲线的。这些开发者会对切换语言有一种抵抗。我能预见到,必须在培训上投入成本,并投入更多时间让Android开发团队能切换到Kotlin。

编译速度慢

一些开发者报告说,Kotlin的一大缺点就是编译速度太慢。有时候,Kotlin的编译速度并不慢,但有时候却非常慢。

较小的社区

尽管Kotlin潜力很大,尽管它在迅速成长为强大的语言,目前它的开发者社区还非常小。这就是说学习Kotlin的资料很少,会有很多问题无人回答,即使是对于熟悉Java的人来说。

结论

使用React Native对于适合它的项目非常容易,但我认为,它毕竟是个JavaScript库,尽管非常好用、非常耀眼。但作为一门语言,依然无法超越Kotlin。

你认为如何?你认为Kotlin和React Native哪个更好?欢迎在评论中讨论。

作者:Dev Shankar Ganguly,BacancyTechnology的数字市场执行官。

原文:
https://hackernoon.com/top-pros-cons-comparison-react-native-vs-kotlin-2a0dfd1df3e3

译者:弯月,责编:郭芮

“征稿啦!”

CSDN 公众号秉持着「与千万技术人共成长」理念,不仅以「极客头条」、「畅言」栏目在第一时间以技术人的独特视角描述技术人关心的行业焦点事件,更有「技术头条」专栏,深度解读行业内的热门技术与场景应用,让所有的开发者紧跟技术潮流,保持警醒的技术嗅觉,对行业趋势、技术有更为全面的认知。

如果你有优质的文章,或是行业热点事件、技术趋势的真知灼见,或是深度的应用实践、场景方案等的新见解,欢迎联系 CSDN 投稿,联系方式:微信(guorui_1118,请备注投稿+姓名+公司职位),邮箱(guorui@csdn.net)。