9月7日-8日,相约 2023 腾讯全球数字生态大会!聚焦产业未来发展新趋势! 了解详情
写点什么

Go 1.4 发布:支持 Android,改进垃圾收集器

  • 2014-12-11
  • 本文字数:1011 字

    阅读完需:约 3 分钟

在 Go 1.3 发布 6 个月之后,Google宣布发布Go 1.4。Go 1.4 正式支持Android 原生开发,不过这方面的工作还处于繁重的开发之中。该版本还改进了垃圾收集器,语言方面也有少许变化。

InfoQ 数月前曾报道过,Google 的工程师正在为支持用Go 语言开发原生Android 应用而努力。随着Go 1.4 的发布,向Android 进行实验性移植的草案已经成为现实,Google 的Go 团队的工程师Andrew Gerrand 介绍说,“仅使用Go 代码编写简单的Android 应用已经成为可能”。

对Android 的支持是通过 golang.org/x/mobile 库实现的,其中包括用于生成语言绑定的包(支持从 Java 调用 Go 代码),还有用于创建一个完整的原生应用的包,再就是一些例子,以及到 OpenGL 的绑定

值得一提的是,Google 的计划并非是基于 Go 提供完整的 Android NDK,而只是支持用 Go 编写 Android 应用的一部分。发布说明中提到:

提供的接口主要针对的是游戏。我们期望的是应用在整个屏幕上绘制(通过 OpenGL,参见 go.mobile/gl 包),不会暴露平台屏幕管理基础设施的任何信息。在 Android 上,这意味着一个原生应用等价于 iOS 上一个单独的 Activity(特别是 NativeActivity) ,一个单独的 UIWindow。触屏事件也可以通过这个包获得。当 Android 支持脱离预览版状态后,Android NDK 支持的所有 API 都将通过一个 Go 包暴露出来。

此外,Andrew 还提到:

在这一阶段,支持库仍然是刚刚起步,还处于繁重的开发之中。早期的使用者应该会遇到不少问题,我们也欢迎社区参与进来。

Go 1.4 在改进垃圾收集器方面也做了很多工作,为将在后面的版本中唱主角的完全并发的收集器打下了基础。此外,现在的栈在必要时会重新分配,以保证连续性,并消除众所周知的“热栈分割( hot stack split )”问题。

工具方面也有改进,go 命令现在支持构建时生成源代码。Andrew 提到,利用该特性,可用使用新的 stringer 工具为类型常量自动生成 String 方法。

最后,Go 1.4 还对语言做了一些修改,它们是:

  • 新的 for-range 循环形式,支持用

代替

for i := range x {

}

  • 禁止在 **T 上调用方法,像 Go 语言的之前版本支持以下形式的方法调用:

type T int

var x **T

x.M()

这种调用方法并不符合 Go 语言规范,规范只允许自动插入一个解引用(dereference)操作。依赖之前行为的代码不能通过编译,但是也很容易修复,只需要显式地对变量解引用。

更多细节,请参考发布说明

查看英文原文: New Go 1.4 Adds Support for Android, Improves Garbage Collection

活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2014-12-11 23:213252
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 127.0 次阅读, 收获喜欢 33 次。

关注

评论

发布
暂无评论
发现更多内容

《经济学人》2021年3月13日刊精彩文章导读及资源免费下载

wbliu85

Zookeeper.01 - 简介

insight

zookeeper 3月日更

MySQL主从复制机制

luojiahu

MySQL 主从复制

2021字节面经最新整理: 面试真经/思维导图/学习笔记!火遍全网

比伯

Java 编程 架构 面试 计算机

资深大牛带你了解源码!面试题解析已整理成文档,已拿offer

欢喜学安卓

android 程序员 面试 移动开发

算法攻关 - 重上到下打印二叉树 (O(n))_offer32

小诚信驿站

刘晓成 小诚信驿站 28天写作 算法攻关 从上到下打印二叉树

万事开头难——人为推进效应

Justin

心理学 28天写作 游戏设计

代码审查:从 ArrayList 说线程安全

mzlogin

Java 代码审查

浅谈数仓、数仓模型分层

白程序员的自习室

大数据 解决方案 通用设计模型 数仓

资深大牛带你了解源码!最详细的docker中安装并配置redis,实战解析

欢喜学安卓

android 程序员 面试 移动开发

寻找被遗忘的勇气(十三)

Changing Lin

3月日更

【LeetCode】设计哈希集合Java题解

Albert

算法 LeetCode 28天写作 3月日更

如何实现可靠UDP传输

赖猫

计算机网络 udp TCP/IP

「Linux」网络配置大揭秘

我是程序员小贱

3月日更

虚拟路由器冗余协议 VRRP 详解

数字化“翻译官”

boshi

数字化 七日更

微服务学习笔记

lenka

3月日更

Elasticsearch 近实时搜索 Near Real-Time Search

escray

elastic 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 3月日更

进入大厂的简历应该是什么样子

我是程序员小贱

3月日更

【办公自动化】打卡示范

IT蜗壳-Tango

办公自动化 3月日更 IT蜗壳教学

太简单了!看完这篇还能不会SpringCloud+Nginx高并发?

Java架构追梦

Java nginx 架构 面试 SpringCloud

css高度坍塌与清除浮动

依旧廖凯

28天写作 3月日更

Python 日期格式和时间以及当前时间和时间戳

HoneyMoose

[转]html5设计原理

小江

滚雪球学 Python 之怎么玩转时间和日期库

梦想橡皮擦

28天写作 3月日更

对话微众和红枣:预言机是区块链提供可信数据的基础设施

CECBC

区块链

LeetCode题解:91. 解码方法,动态规划,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

你最喜欢的奥斯卡电影是哪部?

wbliu85

熟练使用SSH客户端常用工具SecureCRT

xiezhr

Linux SSH securecrt SSH工具

原来我还有网络天赋

叫练

网络 交换机

优雅编程 | Javascript闭包的4种高级用法

devpoint

闭包 防抖 节流 闭包要点

  • 扫码添加小助手
    领取最新资料包
Go 1.4发布:支持Android,改进垃圾收集器_Google_Sergio De Simone_InfoQ精选文章