Java 程序员最爱 Kotlin的优缺点?

Java 程序员最爱 Kotlin的优缺点?

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

Java 程序员最爱 Kotlin的优缺点?

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的优缺点。

Java 程序员最爱 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的人来说。

Java 程序员最爱 Kotlin的优缺点?

结论

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

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

相关推荐