Thursday, September 21, 2017

Android应该放弃Java投入Go语言?

我能肯定大家最近都了解到了关于 Oracle(甲骨文)正在向 Google 索要 Java 的专利费,因为他们认为 Google 开发的 Android 移动操作系统使用了他们的专利。这是非常荒谬的,Java 的流行就是因为 Java 的大部分东西都是开源的。(这也不是 Oracle 第一次向别的公司索要专利费)。

在有很多更好的语言可以选择的情况下,为什么 Google 仍然还要使用 Java 来开发 Android 呢?Google 最终选择 Java 的原因是因为 Java 非常流行,而且 Java 可以通过一定程度的定制完成底层的硬件操作(比如C),然而一些更高层的语言(比如 JavaScript)并没有这种功能。一旦 Google 选择了这样一个非常流行的语言,对于开发者来讲,上手 Android 开发也变得简单的多。

最近一段时间 Android 是最流行的移动平台,但是 IOS 的市场份额也非常接近。你知道 IOS 选择的编程语言么?对是 Objective-C,除了开发苹果的产品之外,几乎没有人使用 Objective-C。所以说苹果选择了一种不流行的,但是基本上是自己控制的语言平台。

Google 确实需要为 Android 选择另外的编程语言,一个自己有更多的控制权限的语言,是否流行并不重要(比如 IOS)。Google 应该选择 Go,在 golang.org 上我们可以看到:

Go is an open source project developed by a team at Google and many contributors from the open source community. Go is distributed under a BSD-style license.

Go 是一个新的并没有多少用户的语言,但是 Obective-C同样。Google 是 Go 语言的奠基人,可以完全控制 Go 语言的发展。Go 是在 BSD 协议下发布的开源语言,这意味着所有的开发者可以在任何地方使用它。另外,Go 是一个操作系统级的语言。这里有一些关于 Go 的信息。

Go 语言在现有的系统编程语言环境遇到困难时诞生了。程序设计变得如此的困难,而选择语言就是其中很大的一个原因。开发者不得不选择一个高效编译、高效执行且开发简单的语言,而这三种特性在现代的语言中并不会同时存在。程序开发者如果想选择简单胜过安全的语言,可能转向动态类型的语言,例如 Python、JavaScript 而不是C++、Java。Go 语言是一个试图结合动态类型和静态类型,编译效率和安全性以及语言的易用性等众多特性与一体的一种尝试。他的另一个目标是支持现代的基于网络的、基于多核的计算。最后,Go 还是非常快的,他可以在单个计算机上仅仅花费几秒时间构建一个庞大的应用程序。为了达到这些目标需要解决这些语言问题:灵活的类型系统、并发的垃圾回收、强制的依赖规范等等。这些东西不是旧的语言一些库或者工具可以处理的,这也就是他被称为新的编程语言的原因。

这里有我提到的三种语言的语法比较:

Go 版本的 HelloWorld:

package main
import "fmt"
func main () {
    fmt.Println ("Hello, World!")
}

Java 版本的 HelloWorld:

class ArbitraryClassName {
    public static void main (String<> args) {
        System.out.println ("Hello World!");
    }
}

Objective-C版本的 HelloWorld

#import 
int main ( int argc, const char *argv<> ) {
    printf ("Hello World!");
    return 0;
}

英文原文:Why Android should switch to Go

Leave a Reply

Your email address will not be published. Required fields are marked *